zink: be explicit about separate shader dsl indexing during creation
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Mon, 3 Apr 2023 16:45:11 +0000 (12:45 -0400)
committerMarge Bot <emma+marge@anholt.net>
Tue, 4 Apr 2023 11:29:01 +0000 (11:29 +0000)
this fixes a minor issue where a fs without a vs dsl would have the wrong
index

Fixes: e3b746e3a31 ("zink: use GPL to handle (simple) separate shader objects")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22269>

src/gallium/drivers/zink/zink_program.c

index f1b22f8..b0a8042 100644 (file)
@@ -1175,12 +1175,12 @@ create_gfx_program_separable(struct zink_context *ctx, struct zink_shader **stag
 
    if (prog->shaders[MESA_SHADER_VERTEX]->precompile.dsl) {
       prog->base.dd.binding_usage |= BITFIELD_BIT(0);
-      prog->base.dsl[prog->base.num_dsl] = prog->shaders[MESA_SHADER_VERTEX]->precompile.dsl;
-      prog->base.num_dsl++;
+      prog->base.dsl[0] = prog->shaders[MESA_SHADER_VERTEX]->precompile.dsl;
+      prog->base.num_dsl = 1;
    }
    if (prog->shaders[MESA_SHADER_FRAGMENT]->precompile.dsl) {
       prog->base.dd.binding_usage |= BITFIELD_BIT(1);
-      prog->base.dsl[prog->base.num_dsl] = prog->shaders[MESA_SHADER_FRAGMENT]->precompile.dsl;
+      prog->base.dsl[1] = prog->shaders[MESA_SHADER_FRAGMENT]->precompile.dsl;
       /* guarantee a null dsl if vs doesn't have descriptors */
       prog->base.num_dsl = 2;
    }