mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 19:50:11 +01:00
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:
parent
24535ffb3d
commit
a93685ef55
3 changed files with 8 additions and 0 deletions
|
|
@ -4330,6 +4330,9 @@ zink_shader_create(struct zink_screen *screen, struct nir_shader *nir,
|
||||||
struct zink_shader *ret = rzalloc(NULL, struct zink_shader);
|
struct zink_shader *ret = rzalloc(NULL, struct zink_shader);
|
||||||
bool have_psiz = false;
|
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;
|
ret->sinfo.have_vulkan_memory_model = screen->info.have_KHR_vulkan_memory_model;
|
||||||
|
|
||||||
util_queue_fence_init(&ret->precompile.fence);
|
util_queue_fence_init(&ret->precompile.fence);
|
||||||
|
|
|
||||||
|
|
@ -367,6 +367,7 @@ update_gfx_shader_modules(struct zink_context *ctx,
|
||||||
bool default_variants = true;
|
bool default_variants = true;
|
||||||
assert(prog->modules[MESA_SHADER_VERTEX]);
|
assert(prog->modules[MESA_SHADER_VERTEX]);
|
||||||
uint32_t variant_hash = prog->last_variant_hash;
|
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++) {
|
for (unsigned i = 0; i < MESA_SHADER_COMPUTE; i++) {
|
||||||
if (!(mask & BITFIELD_BIT(i)))
|
if (!(mask & BITFIELD_BIT(i)))
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -1034,6 +1035,8 @@ zink_create_gfx_program(struct zink_context *ctx,
|
||||||
prog->gfx_hash = gfx_hash;
|
prog->gfx_hash = gfx_hash;
|
||||||
prog->base.removed = true;
|
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) {
|
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][0], prog);
|
||||||
util_dynarray_init(&prog->shader_cache[i][0][1], prog);
|
util_dynarray_init(&prog->shader_cache[i][0][1], prog);
|
||||||
|
|
|
||||||
|
|
@ -736,6 +736,7 @@ struct zink_shader {
|
||||||
bool bindless;
|
bool bindless;
|
||||||
bool can_inline;
|
bool can_inline;
|
||||||
bool has_uniforms;
|
bool has_uniforms;
|
||||||
|
bool has_edgeflags;
|
||||||
struct spirv_shader *spirv;
|
struct spirv_shader *spirv;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
|
@ -1022,6 +1023,7 @@ struct zink_gfx_program {
|
||||||
unsigned inlined_variant_count[ZINK_GFX_SHADER_COUNT];
|
unsigned inlined_variant_count[ZINK_GFX_SHADER_COUNT];
|
||||||
uint32_t default_variant_hash;
|
uint32_t default_variant_hash;
|
||||||
uint8_t inline_variants; //which stages are using inlined uniforms
|
uint8_t inline_variants; //which stages are using inlined uniforms
|
||||||
|
bool has_edgeflags;
|
||||||
|
|
||||||
/* separable */
|
/* separable */
|
||||||
struct zink_gfx_program *full_prog;
|
struct zink_gfx_program *full_prog;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue