Mesa (main): ir3: handle gl_Layer and gl_ViewportIndex when there is TES + GS
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu May 26 09:08:28 UTC 2022
Module: Mesa
Branch: main
Commit: 713f5040337cce93636259c0d8dd8eb365ce7afa
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=713f5040337cce93636259c0d8dd8eb365ce7afa
Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date: Tue May 24 20:31:44 2022 +0300
ir3: handle gl_Layer and gl_ViewportIndex when there is TES + GS
Fixes CTS tests:
KHR-GL46.shader_viewport_layer_array.ShaderViewportIndexTestCase
KHR-GL46.shader_viewport_layer_array.ShaderLayerFramebufferLayeredTestCase
KHR-GL46.shader_viewport_layer_array.ShaderLayerFramebufferNonLayeredTestCase
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6497
Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16696>
---
src/freedreno/ir3/ir3_nir_lower_tess.c | 9 +++++++--
src/freedreno/ir3/ir3_shader.h | 3 ++-
src/gallium/drivers/zink/ci/zink-tu-a630-fails.txt | 3 ---
3 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/freedreno/ir3/ir3_nir_lower_tess.c b/src/freedreno/ir3/ir3_nir_lower_tess.c
index a038cd6c41e..db96893aa75 100644
--- a/src/freedreno/ir3/ir3_nir_lower_tess.c
+++ b/src/freedreno/ir3/ir3_nir_lower_tess.c
@@ -29,7 +29,8 @@ struct state {
uint32_t topology;
struct primitive_map {
- unsigned loc[32 + 4]; /* +POSITION +PSIZE +CLIP_DIST0 +CLIP_DIST1 */
+ /* +POSITION, +PSIZE, ... - see shader_io_get_unique_index */
+ unsigned loc[32 + 6];
unsigned stride;
} map;
@@ -106,8 +107,12 @@ shader_io_get_unique_index(gl_varying_slot slot)
return 2;
if (slot == VARYING_SLOT_CLIP_DIST1)
return 3;
+ if (slot == VARYING_SLOT_VIEWPORT)
+ return 4;
+ if (slot == VARYING_SLOT_LAYER)
+ return 5;
if (slot >= VARYING_SLOT_VAR0 && slot <= VARYING_SLOT_VAR31)
- return 4 + (slot - VARYING_SLOT_VAR0);
+ return 6 + (slot - VARYING_SLOT_VAR0);
unreachable("illegal slot in get unique index\n");
}
diff --git a/src/freedreno/ir3/ir3_shader.h b/src/freedreno/ir3/ir3_shader.h
index 79dde853974..e91c2df6cc1 100644
--- a/src/freedreno/ir3/ir3_shader.h
+++ b/src/freedreno/ir3/ir3_shader.h
@@ -625,8 +625,9 @@ struct ir3_shader_variant {
/* Map from location to offset in per-primitive storage. In dwords for
* HS, where varyings are read in the next stage via ldg with a dword
* offset, and in bytes for all other stages.
+ * +POSITION, +PSIZE, ... - see shader_io_get_unique_index
*/
- unsigned output_loc[32 + 4]; /* +POSITION +PSIZE +CLIP_DIST0 +CLIP_DIST1 */
+ unsigned output_loc[32 + 6];
/* attributes (VS) / varyings (FS):
* Note that sysval's should come *after* normal inputs.
diff --git a/src/gallium/drivers/zink/ci/zink-tu-a630-fails.txt b/src/gallium/drivers/zink/ci/zink-tu-a630-fails.txt
index e67864e2cb5..d6a2e02fda7 100644
--- a/src/gallium/drivers/zink/ci/zink-tu-a630-fails.txt
+++ b/src/gallium/drivers/zink/ci/zink-tu-a630-fails.txt
@@ -230,9 +230,6 @@ KHR-GL46.shader_image_load_store.multiple-uniforms,Fail
KHR-GL46.shader_storage_buffer_object.basic-atomic-case1,Fail
KHR-GL46.shader_storage_buffer_object.basic-stdLayout-case3-cs,Crash
KHR-GL46.shader_storage_buffer_object.basic-stdLayout-case3-vs,Crash
-KHR-GL46.shader_viewport_layer_array.ShaderLayerFramebufferLayeredTestCase,Crash
-KHR-GL46.shader_viewport_layer_array.ShaderLayerFramebufferNonLayeredTestCase,Crash
-KHR-GL46.shader_viewport_layer_array.ShaderViewportIndexTestCase,Crash
KHR-GL46.tessellation_shader.vertex.vertex_ordering,Fail
KHR-GL46.texture_cube_map_array.color_depth_attachments,Fail
KHR-GL46.texture_cube_map_array.image_op_geometry_sh,Fail
More information about the mesa-commit
mailing list