From: Louis-Francis Ratté-Boulianne Date: Sat, 12 Oct 2019 06:46:48 +0000 (-0400) Subject: gallium: add PIPE_CAP_PACKED_STREAM_OUTPUT X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4ce339e74118786893b5138db37c09c4f2d830fd;p=mesa.git gallium: add PIPE_CAP_PACKED_STREAM_OUTPUT Setting this cap to 0 (default is 1) should disable packing optimization for stream output (e.g. GL transform feedback captured variables). Signed-off-by: Louis-Francis Ratté-Boulianne Reviewed-by: Alyssa Rosenzweig Acked-by: Daniel Stone Part-of: --- diff --git a/src/gallium/auxiliary/util/u_screen.c b/src/gallium/auxiliary/util/u_screen.c index 372094f77e6..510c46aca5f 100644 --- a/src/gallium/auxiliary/util/u_screen.c +++ b/src/gallium/auxiliary/util/u_screen.c @@ -414,6 +414,9 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen, /* Enables INTEL_blackhole_render */ return 0; + case PIPE_CAP_PACKED_STREAM_OUTPUT: + return 1; + default: unreachable("bad PIPE_CAP_*"); } diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 3b1d93528b5..aad67725f36 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -915,6 +915,7 @@ enum pipe_cap /* Turn draw, dispatch, blit into NOOP */ PIPE_CAP_FRONTEND_NOOP, PIPE_CAP_NIR_IMAGES_AS_DEREF, + PIPE_CAP_PACKED_STREAM_OUTPUT, }; /** diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 2d946b5a358..d44c2c4ee9d 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -1420,6 +1420,9 @@ void st_init_extensions(struct pipe_screen *screen, consts->DisableVaryingPacking = GL_TRUE; } + if (!screen->get_param(screen, PIPE_CAP_PACKED_STREAM_OUTPUT)) + consts->DisableTransformFeedbackPacking = GL_TRUE; + unsigned max_fb_fetch_rts = screen->get_param(screen, PIPE_CAP_FBFETCH); bool coherent_fb_fetch = screen->get_param(screen, PIPE_CAP_FBFETCH_COHERENT);