aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLouis-Francis Ratté-Boulianne <[email protected]>2019-10-12 02:59:53 -0400
committerMarge Bot <[email protected]>2020-03-03 12:28:23 +0000
commitbabf7357d24b88a548f50aebca74c6ffd8f81d52 (patch)
tree2ba894362336a57b38fa0eb4d5d8381b665eec67
parent4ce339e74118786893b5138db37c09c4f2d830fd (diff)
gallium: add PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED
This new capability indicates that the nir_lower_viewport_transform pass is enabled. This also means that the gl_Position value is modified and should be lowered for transform feedback, if needed. Signed-off-by: Louis-Francis Ratté-Boulianne <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]> Acked-by: Daniel Stone <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2433>
-rw-r--r--src/gallium/auxiliary/util/u_screen.c3
-rw-r--r--src/gallium/include/pipe/p_defines.h1
-rw-r--r--src/mesa/state_tracker/st_extensions.c5
3 files changed, 9 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/util/u_screen.c b/src/gallium/auxiliary/util/u_screen.c
index 510c46aca5f..d94f082ba96 100644
--- a/src/gallium/auxiliary/util/u_screen.c
+++ b/src/gallium/auxiliary/util/u_screen.c
@@ -417,6 +417,9 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
case PIPE_CAP_PACKED_STREAM_OUTPUT:
return 1;
+ case PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED:
+ return 0;
+
default:
unreachable("bad PIPE_CAP_*");
}
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index aad67725f36..7ae6dd4c9f5 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -916,6 +916,7 @@ enum pipe_cap
PIPE_CAP_FRONTEND_NOOP,
PIPE_CAP_NIR_IMAGES_AS_DEREF,
PIPE_CAP_PACKED_STREAM_OUTPUT,
+ PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED,
};
/**
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index d44c2c4ee9d..229319af690 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -331,6 +331,11 @@ void st_init_limits(struct pipe_screen *screen,
* because it can actually optimize SSBO access.
*/
options->LowerBufferInterfaceBlocks = !prefer_nir;
+
+ if (sh == MESA_SHADER_VERTEX) {
+ if (screen->get_param(screen, PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED))
+ options->LowerBuiltinVariablesXfb |= VARYING_BIT_POS;
+ }
}
c->MaxUserAssignableUniformLocations =