freedreno/a6xx: add 'type' to shader state key
authorRob Clark <robdclark@chromium.org>
Fri, 31 May 2019 15:44:55 +0000 (08:44 -0700)
committerRob Clark <robdclark@chromium.org>
Fri, 31 May 2019 19:58:47 +0000 (12:58 -0700)
We could have identical texture state for both VS and FS.. which would
result in VS state getting created first, and FS state mapping to the
identical cmdstream.  Resulting in VS state getting emitted twice and no
FS state emitted.

Fixes:
  dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_array.sampler2D_both
  dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_both
  dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_both
  dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_both
  dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_both
  dEQP-GLES31.functional.program_uniform.by_pointer.render.array_in_struct.sampler2D_samplerCube_both
  dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_both
  dEQP-GLES31.functional.program_uniform.by_value.render.nested_structs_arrays.sampler2D_samplerCube_both

Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/gallium/drivers/freedreno/a6xx/fd6_texture.c
src/gallium/drivers/freedreno/a6xx/fd6_texture.h

index 80eb9906ebea393b8566dab053d0276c23fc6abf..608aa08833e3fcd32bd1c9793953471b3e8e92c1 100644 (file)
@@ -396,6 +396,7 @@ fd6_texture_state(struct fd_context *ctx, enum pipe_shader_type type,
                needs_border |= sampler->needs_border;
        }
 
+       key.type = type;
        key.bcolor_offset = fd6_border_color_offset(ctx, type, tex);
 
        uint32_t hash = key_hash(&key);
index 7f0c1538bf41f335d0d0e151312185e65d6c61d1..09b14c291097c52b1c02e316850ce957398afe39 100644 (file)
@@ -142,6 +142,7 @@ struct fd6_texture_key {
        struct {
                uint16_t seqno;
        } samp[16];
+       uint8_t type;
        uint8_t bcolor_offset;
 };