diff options
-rw-r--r-- | src/broadcom/vulkan/v3dv_cmd_buffer.c | 27 | ||||
-rw-r--r-- | src/broadcom/vulkan/v3dv_private.h | 2 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c index 5436dfe040d..aa8a71cda28 100644 --- a/src/broadcom/vulkan/v3dv_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c @@ -884,3 +884,30 @@ v3dv_EndCommandBuffer(VkCommandBuffer commandBuffer) return VK_SUCCESS; } + + +void +v3dv_CmdBindPipeline(VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline _pipeline) +{ + V3DV_FROM_HANDLE(v3dv_cmd_buffer, cmd_buffer, commandBuffer); + V3DV_FROM_HANDLE(v3dv_pipeline, pipeline, _pipeline); + + switch (pipelineBindPoint) { + case VK_PIPELINE_BIND_POINT_COMPUTE: + assert(!"VK_PIPELINE_BIND_POINT_COMPUTE not supported yet"); + break; + + case VK_PIPELINE_BIND_POINT_GRAPHICS: + if (cmd_buffer->state.pipeline == pipeline) + return; + + cmd_buffer->state.pipeline = pipeline; + break; + + default: + assert(!"invalid bind point"); + break; + } +} diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h index 32c96c0dcc5..3633756ba42 100644 --- a/src/broadcom/vulkan/v3dv_private.h +++ b/src/broadcom/vulkan/v3dv_private.h @@ -389,6 +389,8 @@ struct v3dv_cmd_buffer_state { /* Subpass state */ uint32_t subpass_idx; struct v3dv_cmd_buffer_attachment_state attachments[6]; /* 4 color + D + S */ + + struct v3dv_pipeline *pipeline; }; struct v3dv_cmd_buffer { |