zink: add has_edgeflags flag to zink_shader and zink_gfx_program

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21238>
This commit is contained in:
antonino 2023-02-21 10:27:54 +01:00 committed by Marge Bot
parent 24535ffb3d
commit a93685ef55
3 changed files with 8 additions and 0 deletions

View file

@ -4330,6 +4330,9 @@ zink_shader_create(struct zink_screen *screen, struct nir_shader *nir,
struct zink_shader *ret = rzalloc(NULL, struct zink_shader);
bool have_psiz = false;
ret->has_edgeflags = nir->info.stage == MESA_SHADER_VERTEX &&
nir_find_variable_with_location(nir, nir_var_shader_out, VARYING_SLOT_EDGE);
ret->sinfo.have_vulkan_memory_model = screen->info.have_KHR_vulkan_memory_model;
util_queue_fence_init(&ret->precompile.fence);

View file

@ -367,6 +367,7 @@ update_gfx_shader_modules(struct zink_context *ctx,
bool default_variants = true;
assert(prog->modules[MESA_SHADER_VERTEX]);
uint32_t variant_hash = prog->last_variant_hash;
prog->has_edgeflags = prog->shaders[MESA_SHADER_VERTEX]->has_edgeflags;
for (unsigned i = 0; i < MESA_SHADER_COMPUTE; i++) {
if (!(mask & BITFIELD_BIT(i)))
continue;
@ -1034,6 +1035,8 @@ zink_create_gfx_program(struct zink_context *ctx,
prog->gfx_hash = gfx_hash;
prog->base.removed = true;
prog->has_edgeflags = prog->shaders[MESA_SHADER_VERTEX] &&
prog->shaders[MESA_SHADER_VERTEX]->has_edgeflags;
for (int i = 0; i < ZINK_GFX_SHADER_COUNT; ++i) {
util_dynarray_init(&prog->shader_cache[i][0][0], prog);
util_dynarray_init(&prog->shader_cache[i][0][1], prog);

View file

@ -736,6 +736,7 @@ struct zink_shader {
bool bindless;
bool can_inline;
bool has_uniforms;
bool has_edgeflags;
struct spirv_shader *spirv;
struct {
@ -1022,6 +1023,7 @@ struct zink_gfx_program {
unsigned inlined_variant_count[ZINK_GFX_SHADER_COUNT];
uint32_t default_variant_hash;
uint8_t inline_variants; //which stages are using inlined uniforms
bool has_edgeflags;
/* separable */
struct zink_gfx_program *full_prog;