summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro PiƱeiro <apinheiro@igalia.com>2019-12-18 15:38:21 +0100
committerMarge Bot <eric+marge@anholt.net>2020-10-13 21:21:26 +0000
commitfca4dcee9f23af036ff2094406c91c46c34ced8d (patch)
tree8ffc4b32ba04108b8cd02d21a05df8328e4f181c
parent60145629a2bdcd4e7835b1dd810b9f60bfa9af83 (diff)
v3dv: initial stub for CmdBindPipeline
Right now it only sets the pipeline to the command buffer state. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
-rw-r--r--src/broadcom/vulkan/v3dv_cmd_buffer.c27
-rw-r--r--src/broadcom/vulkan/v3dv_private.h2
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 {