Metal: Split off QueueMTL
This commit is contained in:
parent
0f2e7b67c1
commit
1f51263672
|
@ -131,6 +131,8 @@ if (NXT_ENABLE_METAL)
|
|||
${METAL_DIR}/InputStateMTL.h
|
||||
${METAL_DIR}/PipelineLayoutMTL.mm
|
||||
${METAL_DIR}/PipelineLayoutMTL.h
|
||||
${METAL_DIR}/QueueMTL.mm
|
||||
${METAL_DIR}/QueueMTL.h
|
||||
${METAL_DIR}/RenderPipelineMTL.mm
|
||||
${METAL_DIR}/RenderPipelineMTL.h
|
||||
${METAL_DIR}/ResourceUploader.mm
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include "nxt/nxtcpp.h"
|
||||
|
||||
#include "backend/Device.h"
|
||||
#include "backend/Queue.h"
|
||||
#include "backend/metal/Forward.h"
|
||||
#include "common/Serial.h"
|
||||
|
||||
|
@ -82,14 +81,6 @@ namespace backend { namespace metal {
|
|||
id<MTLCommandBuffer> mPendingCommands = nil;
|
||||
};
|
||||
|
||||
class Queue : public QueueBase {
|
||||
public:
|
||||
Queue(Device* device);
|
||||
|
||||
// NXT API
|
||||
void Submit(uint32_t numCommands, CommandBuffer* const* commands);
|
||||
};
|
||||
|
||||
}} // namespace backend::metal
|
||||
|
||||
#endif // BACKEND_METAL_DEVICEMTL_H_
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright 2017 The NXT Authors
|
||||
// Copyright 2018 The NXT Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -24,6 +24,7 @@
|
|||
#include "backend/metal/DepthStencilStateMTL.h"
|
||||
#include "backend/metal/InputStateMTL.h"
|
||||
#include "backend/metal/PipelineLayoutMTL.h"
|
||||
#include "backend/metal/QueueMTL.h"
|
||||
#include "backend/metal/RenderPipelineMTL.h"
|
||||
#include "backend/metal/ResourceUploader.h"
|
||||
#include "backend/metal/SamplerMTL.h"
|
||||
|
@ -193,21 +194,4 @@ namespace backend { namespace metal {
|
|||
return mResourceUploader;
|
||||
}
|
||||
|
||||
// Queue
|
||||
|
||||
Queue::Queue(Device* device) : QueueBase(device) {
|
||||
}
|
||||
|
||||
void Queue::Submit(uint32_t numCommands, CommandBuffer* const* commands) {
|
||||
Device* device = ToBackend(GetDevice());
|
||||
device->Tick();
|
||||
id<MTLCommandBuffer> commandBuffer = device->GetPendingCommandBuffer();
|
||||
|
||||
for (uint32_t i = 0; i < numCommands; ++i) {
|
||||
commands[i]->FillCommands(commandBuffer);
|
||||
}
|
||||
|
||||
device->SubmitPendingCommandBuffer();
|
||||
}
|
||||
|
||||
}} // namespace backend::metal
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "backend/metal/DeviceMTL.h"
|
||||
#include "backend/metal/InputStateMTL.h"
|
||||
#include "backend/metal/PipelineLayoutMTL.h"
|
||||
#include "backend/metal/QueueMTL.h"
|
||||
#include "backend/metal/RenderPipelineMTL.h"
|
||||
#include "backend/metal/SamplerMTL.h"
|
||||
#include "backend/metal/ShaderModuleMTL.h"
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
// Copyright 2018 The NXT Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef BACKEND_METAL_QUEUEMTL_H_
|
||||
#define BACKEND_METAL_QUEUEMTL_H_
|
||||
|
||||
#include "backend/Queue.h"
|
||||
|
||||
namespace backend { namespace metal {
|
||||
|
||||
class CommandBuffer;
|
||||
class Device;
|
||||
|
||||
class Queue : public QueueBase {
|
||||
public:
|
||||
Queue(Device* device);
|
||||
|
||||
// NXT API
|
||||
void Submit(uint32_t numCommands, CommandBuffer* const* commands);
|
||||
};
|
||||
|
||||
}} // namespace backend::metal
|
||||
|
||||
#endif // BACKEND_METAL_QUEUEMTL_H_
|
|
@ -0,0 +1,37 @@
|
|||
// Copyright 2018 The NXT Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "backend/metal/QueueMTL.h"
|
||||
|
||||
#include "backend/metal/CommandBufferMTL.h"
|
||||
#include "backend/metal/DeviceMTL.h"
|
||||
|
||||
namespace backend { namespace metal {
|
||||
|
||||
Queue::Queue(Device* device) : QueueBase(device) {
|
||||
}
|
||||
|
||||
void Queue::Submit(uint32_t numCommands, CommandBuffer* const* commands) {
|
||||
Device* device = ToBackend(GetDevice());
|
||||
device->Tick();
|
||||
id<MTLCommandBuffer> commandBuffer = device->GetPendingCommandBuffer();
|
||||
|
||||
for (uint32_t i = 0; i < numCommands; ++i) {
|
||||
commands[i]->FillCommands(commandBuffer);
|
||||
}
|
||||
|
||||
device->SubmitPendingCommandBuffer();
|
||||
}
|
||||
|
||||
}} // namespace backend::metal
|
Loading…
Reference in New Issue