From 64d9ad0027744f5bcefa435c64edb24496c39714 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 23 Nov 2017 14:24:00 +0100 Subject: [PATCH] [dxvk] Added dispatch call --- src/dxvk/dxvk_context.cpp | 20 ++++++++++++++++++++ src/dxvk/dxvk_context.h | 14 ++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 602c735d3..9715a82e1 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -124,6 +124,16 @@ namespace dxvk { } + void DxvkContext::dispatch( + uint32_t x, + uint32_t y, + uint32_t z) { + TRACE(this, x, y, z); + + m_cmd->cmdDispatch(x, y, z); + } + + void DxvkContext::draw( uint32_t vertexCount, uint32_t instanceCount, @@ -265,6 +275,11 @@ namespace dxvk { } + void DxvkContext::bindComputePipeline() { + // TODO implement + } + + void DxvkContext::bindGraphicsPipeline() { if (m_state.flags.test(DxvkContextFlag::GpDirtyPipeline)) { m_state.flags.clr(DxvkContextFlag::GpDirtyPipeline); @@ -345,6 +360,11 @@ namespace dxvk { } + void DxvkContext::commitComputeState() { + this->bindComputePipeline(); + } + + void DxvkContext::commitGraphicsState() { this->renderPassBegin(); this->bindGraphicsPipeline(); diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h index bf42ec943..4143b2159 100644 --- a/src/dxvk/dxvk_context.h +++ b/src/dxvk/dxvk_context.h @@ -96,6 +96,18 @@ namespace dxvk { const VkClearAttachment& attachment, const VkClearRect& clearArea); + /** + * \brief Starts compute jobs + * + * \param [in] x Number of threads in X direction + * \param [in] y Number of threads in Y direction + * \param [in] z Number of threads in Z direction + */ + void dispatch( + uint32_t x, + uint32_t y, + uint32_t z); + /** * \brief Draws primitive without using an index buffer * @@ -191,6 +203,7 @@ namespace dxvk { void renderPassBegin(); void renderPassEnd(); + void bindComputePipeline(); void bindGraphicsPipeline(); void updateDynamicState(); @@ -199,6 +212,7 @@ namespace dxvk { void updateIndexBufferBinding(); void updateVertexBufferBindings(); + void commitComputeState(); void commitGraphicsState(); DxvkShaderStageState* getShaderStage(