diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 7f1f790ff9d..02e1bc5632d 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -1153,6 +1153,27 @@ zink_resource_barrier(VkCommandBuffer cmdbuf, struct zink_resource *res, } +VkPipelineStageFlags +zink_pipeline_flags_from_stage(VkShaderStageFlagBits stage) +{ + switch (stage) { + case VK_SHADER_STAGE_VERTEX_BIT: + return VK_PIPELINE_STAGE_VERTEX_SHADER_BIT; + case VK_SHADER_STAGE_FRAGMENT_BIT: + return VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT; + case VK_SHADER_STAGE_GEOMETRY_BIT: + return VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT; + case VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT: + return VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT; + case VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT: + return VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT; + case VK_SHADER_STAGE_COMPUTE_BIT: + return VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT; + default: + unreachable("unknown shader stage bit"); + } +} + static VkPipelineStageFlags pipeline_access_stage(VkAccessFlags flags) { diff --git a/src/gallium/drivers/zink/zink_context.h b/src/gallium/drivers/zink/zink_context.h index 97bdbf8b714..d228fcee3b4 100644 --- a/src/gallium/drivers/zink/zink_context.h +++ b/src/gallium/drivers/zink/zink_context.h @@ -225,6 +225,8 @@ zink_resource_barrier(VkCommandBuffer cmdbuf, struct zink_resource *res, zink_begin_render_pass(struct zink_context *ctx, struct zink_batch *batch); +VkPipelineStageFlags +zink_pipeline_flags_from_stage(VkShaderStageFlagBits stage); VkShaderStageFlagBits zink_shader_stage(enum pipe_shader_type type);