From cf903ff79b1b2e06f07806140f459dc62fc4727a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 18 Aug 2023 13:53:00 -0400 Subject: [PATCH] zink: delete a non-maintenance5 workaround for shobj use Part-of: --- src/gallium/drivers/zink/zink_compiler.c | 19 ------------------- src/gallium/drivers/zink/zink_program.c | 3 --- src/gallium/drivers/zink/zink_types.h | 1 - 3 files changed, 23 deletions(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 15a82b473cc..a1f23277a9a 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -3984,24 +3984,6 @@ zink_shader_compile_separate(struct zink_screen *screen, struct zink_shader *zs) zs->non_fs.generated_tcs->precompile.obj = zink_shader_compile_separate(screen, zs->non_fs.generated_tcs); ralloc_free(nir_tcs); } - if (zs->info.stage == MESA_SHADER_VERTEX || zs->info.stage == MESA_SHADER_TESS_EVAL) { - /* create a second variant with PSIZ removed: - * this works around a bug in drivers using nir_assign_io_var_locations() - * where builtins that aren't read by following stages get assigned - * driver locations before varyings and break the i/o interface between shaders even - * though zink has correctly assigned all locations - */ - nir_variable *var = nir_find_variable_with_location(nir_clone, nir_var_shader_out, VARYING_SLOT_PSIZ); - if (var && !var->data.explicit_location) { - var->data.mode = nir_var_shader_temp; - nir_fixup_deref_modes(nir_clone); - NIR_PASS_V(nir_clone, nir_remove_dead_variables, nir_var_shader_temp, NULL); - optimize_nir(nir_clone, NULL); - zs->precompile.no_psiz_obj = compile_module(screen, zs, nir_clone, true, NULL); - spirv_shader_delete(zs->precompile.no_psiz_obj.spirv); - zs->precompile.no_psiz_obj.spirv = NULL; - } - } } ralloc_free(nir); spirv_shader_delete(obj.spirv); @@ -5626,7 +5608,6 @@ zink_shader_free(struct zink_screen *screen, struct zink_shader *shader) zink_descriptor_shader_deinit(screen, shader); if (screen->info.have_EXT_shader_object) { VKSCR(DestroyShaderEXT)(screen->dev, shader->precompile.obj.obj, NULL); - VKSCR(DestroyShaderEXT)(screen->dev, shader->precompile.no_psiz_obj.obj, NULL); } else { if (shader->precompile.obj.mod) VKSCR(DestroyShaderModule)(screen->dev, shader->precompile.obj.mod, NULL); diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 3e4250e142a..5441843f5ab 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -1215,9 +1215,6 @@ create_gfx_program_separable(struct zink_context *ctx, struct zink_shader **stag _mesa_set_add(prog->shaders[i]->programs, prog); simple_mtx_unlock(&prog->shaders[i]->lock); if (screen->info.have_EXT_shader_object) { - /* FIXME: delete this if nir_assign_io_var_locations is ever fixed */ - if (prog->last_vertex_stage != prog->shaders[i] && (i == MESA_SHADER_VERTEX || i == MESA_SHADER_TESS_EVAL)) - prog->objects[i] = prog->shaders[i]->precompile.no_psiz_obj.obj; if (!prog->objects[i]) prog->objects[i] = prog->shaders[i]->precompile.obj.obj; } diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h index 8037028ae58..3350f11a872 100644 --- a/src/gallium/drivers/zink/zink_types.h +++ b/src/gallium/drivers/zink/zink_types.h @@ -813,7 +813,6 @@ struct zink_shader { struct { struct util_queue_fence fence; struct zink_shader_object obj; - struct zink_shader_object no_psiz_obj; //avoid a crippling bug in nir_assign_io_var_locations() VkDescriptorSetLayout dsl; VkPipelineLayout layout; VkPipeline gpl;