diff options
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/vulkan/anv_pipeline.c | 12 | ||||
-rw-r--r-- | src/intel/vulkan/genX_pipeline.c | 1 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index cb34f3be778..4ca1e0be34e 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -501,7 +501,6 @@ anv_pipeline_add_compiled_stage(struct anv_pipeline *pipeline, struct anv_shader_bin *shader) { pipeline->shaders[stage] = shader; - pipeline->active_stages |= mesa_to_vk_shader_stage(stage); } static VkResult @@ -1334,11 +1333,18 @@ anv_pipeline_init(struct anv_pipeline *pipeline, const VkPipelineShaderStageCreateInfo *pStages[MESA_SHADER_STAGES] = {}; struct anv_shader_module *modules[MESA_SHADER_STAGES] = {}; for (uint32_t i = 0; i < pCreateInfo->stageCount; i++) { - gl_shader_stage stage = ffs(pCreateInfo->pStages[i].stage) - 1; + VkShaderStageFlagBits vk_stage = pCreateInfo->pStages[i].stage; + gl_shader_stage stage = vk_to_mesa_shader_stage(vk_stage); pStages[stage] = &pCreateInfo->pStages[i]; modules[stage] = anv_shader_module_from_handle(pStages[stage]->module); + pipeline->active_stages |= vk_stage; } + if (pipeline->active_stages & VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT) + pipeline->active_stages |= VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT; + + assert(pipeline->active_stages & VK_SHADER_STAGE_VERTEX_BIT); + if (modules[MESA_SHADER_VERTEX]) { result = anv_pipeline_compile_vs(pipeline, cache, pCreateInfo, modules[MESA_SHADER_VERTEX], @@ -1378,7 +1384,7 @@ anv_pipeline_init(struct anv_pipeline *pipeline, goto compile_fail; } - assert(pipeline->active_stages & VK_SHADER_STAGE_VERTEX_BIT); + assert(pipeline->shaders[MESA_SHADER_VERTEX]); anv_pipeline_setup_l3_config(pipeline, false); diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c index 9c08bc20331..eb2d4147357 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -1787,6 +1787,7 @@ compute_pipeline_create( pipeline->needs_data_cache = false; assert(pCreateInfo->stage.stage == VK_SHADER_STAGE_COMPUTE_BIT); + pipeline->active_stages |= VK_SHADER_STAGE_COMPUTE_BIT; ANV_FROM_HANDLE(anv_shader_module, module, pCreateInfo->stage.module); result = anv_pipeline_compile_cs(pipeline, cache, pCreateInfo, module, pCreateInfo->stage.pName, |