}
}
-std::vector<Command*> TestGraphicsCommandBuffer::GetCommandsByType(CommandTypeMask mask)
+std::vector<const Command*> TestGraphicsCommandBuffer::GetCommandsByType(CommandTypeMask mask) const
{
- std::vector<Command*> mCommandStack{};
+ std::vector<const Command*> mCommandStack{};
for(auto& cmd : mCommands)
{
if(uint32_t(cmd.type) == (mask & uint32_t(cmd.type)))
return mCommandStack;
}
-std::vector<Command*> TestGraphicsCommandBuffer::GetChildCommandsByType(CommandTypeMask mask)
+std::vector<const Command*> TestGraphicsCommandBuffer::GetChildCommandsByType(CommandTypeMask mask) const
{
- std::vector<Command*> mCommandStack{};
+ std::vector<const Command*> mCommandStack{};
for(auto& cmd : mCommands)
{
if(uint32_t(cmd.type) == (mask & uint32_t(cmd.type)))
struct
{
- std::vector<TestGraphicsCommandBuffer*> buffers;
+ std::vector<const TestGraphicsCommandBuffer*> buffers;
} executeCommandBuffers;
} data;
mCallStack.PushCall("EndRenderPass", "");
}
- void ExecuteCommandBuffers(std::vector<CommandBuffer*>&& commandBuffers) override
+ void ExecuteCommandBuffers(std::vector<const CommandBuffer*>&& commandBuffers) override
{
mCommands.emplace_back();
auto& cmd = mCommands.back();
cmd.data.executeCommandBuffers.buffers.reserve(commandBuffers.size());
for(auto&& item : commandBuffers)
{
- cmd.data.executeCommandBuffers.buffers.emplace_back(static_cast<TestGraphicsCommandBuffer*>(item));
+ cmd.data.executeCommandBuffers.buffers.emplace_back(static_cast<const TestGraphicsCommandBuffer*>(item));
}
mCallStack.PushCall("ExecuteCommandBuffers", "");
}
/**
* Retrieves commands of specified type
*/
- std::vector<Command*> GetCommandsByType(CommandTypeMask mask);
+ std::vector<const Command*> GetCommandsByType(CommandTypeMask mask) const;
- std::vector<Command*> GetChildCommandsByType(CommandTypeMask mask);
+ std::vector<const Command*> GetChildCommandsByType(CommandTypeMask mask) const;
private:
TraceCallStack& mCallStack;
case CommandType::BIND_PIPELINE:
{
currentPipeline = Uncast<TestGraphicsPipeline>(cmd.data.bindPipeline.pipeline);
-
- // Bind framebuffer if different. @todo Move to RenderPass
- auto framebuffer = currentPipeline->framebufferState.framebuffer;
- if(framebuffer && framebuffer != currentFramebuffer)
- {
- auto graphicsFramebuffer = Uncast<TestGraphicsFramebuffer>(framebuffer);
- graphicsFramebuffer->Bind();
- }
- else
- {
- if(currentFramebuffer)
- currentFramebuffer->Bind();
- else
- mGl.BindFramebuffer(GL_FRAMEBUFFER, 0);
- }
BindPipeline(currentPipeline);
break;
}
// Process secondary command buffers
for(auto& buf : cmd.data.executeCommandBuffers.buffers)
{
- ProcessCommandBuffer(*static_cast<TestGraphicsCommandBuffer*>(buf));
+ ProcessCommandBuffer(*Uncast<TestGraphicsCommandBuffer>(buf));
}
break;
}
};
std::vector<ProgramCache> mProgramCache;
+ struct PipelineCache
+ {
+ };
+
std::vector<UniformData> mCustomUniforms;
};
ProcessCreateQueue(mCreateFramebufferQueue);
}
-void EglGraphicsController::ProcessCommandBuffer(GLES::CommandBuffer& commandBuffer)
+void EglGraphicsController::ProcessCommandBuffer(const GLES::CommandBuffer& commandBuffer)
{
for(auto& cmd : commandBuffer.GetCommands())
{
ResolvePresentRenderTarget(cmd.presentRenderTarget.targetToPresent);
// push this command buffer to the discard queue
- mDiscardCommandBufferQueue.push(&commandBuffer);
+ mDiscardCommandBufferQueue.push(const_cast<GLES::CommandBuffer*>(&commandBuffer));
break;
}
case GLES::CommandType::EXECUTE_COMMAND_BUFFERS:
// within secondaries.
for(auto& buf : cmd.executeCommandBuffers.buffers)
{
- ProcessCommandBuffer(*static_cast<GLES::CommandBuffer*>(buf));
+ ProcessCommandBuffer(*static_cast<const GLES::CommandBuffer*>(buf));
}
break;
}
{
while(!queue.empty())
{
- auto* object = queue.front();
+ auto* object = const_cast<U*>(queue.front());
// Destroy
object->DestroyResource();
return mIsShuttingDown;
}
- void ProcessCommandBuffer(GLES::CommandBuffer& commandBuffer);
+ void ProcessCommandBuffer(const GLES::CommandBuffer& commandBuffer);
// Resolves presentation
void ResolvePresentRenderTarget(GLES::RenderTarget* renderTarget);
std::queue<GLES::Buffer*> mCreateBufferQueue; ///< Create queue for buffer resource
std::queue<GLES::Buffer*> mDiscardBufferQueue; ///< Discard queue for buffer resource
- std::queue<GLES::Program*> mDiscardProgramQueue; ///< Discard queue for program resource
- std::queue<GLES::Pipeline*> mDiscardPipelineQueue; ///< Discard queue of pipelines
- std::queue<GLES::Shader*> mDiscardShaderQueue; ///< Discard queue of shaders
- std::queue<GLES::Sampler*> mDiscardSamplerQueue; ///< Discard queue of samplers
- std::queue<GLES::CommandBuffer*> mDiscardCommandBufferQueue; ///< Discard queue of command buffers
- std::queue<GLES::Framebuffer*> mCreateFramebufferQueue; ///< Create queue for framebuffer resource
- std::queue<GLES::Framebuffer*> mDiscardFramebufferQueue; ///< Discard queue for framebuffer resource
+ std::queue<GLES::Program*> mDiscardProgramQueue; ///< Discard queue for program resource
+ std::queue<GLES::Pipeline*> mDiscardPipelineQueue; ///< Discard queue of pipelines
+ std::queue<GLES::Shader*> mDiscardShaderQueue; ///< Discard queue of shaders
+ std::queue<GLES::Sampler*> mDiscardSamplerQueue; ///< Discard queue of samplers
+ std::queue<const GLES::CommandBuffer*> mDiscardCommandBufferQueue; ///< Discard queue of command buffers
+ std::queue<GLES::Framebuffer*> mCreateFramebufferQueue; ///< Create queue for framebuffer resource
+ std::queue<GLES::Framebuffer*> mDiscardFramebufferQueue; ///< Discard queue for framebuffer resource
std::queue<GLES::CommandBuffer*> mCommandQueue; ///< we may have more in the future
mCommands.emplace_back(CommandType::END_RENDERPASS);
}
-void CommandBuffer::ExecuteCommandBuffers(std::vector<Graphics::CommandBuffer*>&& commandBuffers)
+void CommandBuffer::ExecuteCommandBuffers(std::vector<const Graphics::CommandBuffer*>&& commandBuffers)
{
mCommands.emplace_back(CommandType::EXECUTE_COMMAND_BUFFERS);
auto& cmd = mCommands.back();
cmd.executeCommandBuffers.buffers.reserve(commandBuffers.size());
for(auto&& item : commandBuffers)
{
- cmd.executeCommandBuffers.buffers.emplace_back(static_cast<GLES::CommandBuffer*>(item));
+ cmd.executeCommandBuffers.buffers.emplace_back(static_cast<const GLES::CommandBuffer*>(item));
}
}
GetController().DiscardResource(this);
}
-} // namespace Dali::Graphics::GLES
\ No newline at end of file
+} // namespace Dali::Graphics::GLES
struct
{
- std::vector<GLES::CommandBuffer*> buffers;
+ std::vector<const GLES::CommandBuffer*> buffers;
} executeCommandBuffers;
struct
*/
void EndRenderPass() override;
- void ExecuteCommandBuffers(std::vector<Graphics::CommandBuffer*>&& commandBuffers) override;
+ void ExecuteCommandBuffers(std::vector<const Graphics::CommandBuffer*>&& commandBuffers) override;
void Draw(
uint32_t vertexCount,