Mesa (master): i965: enable up to 32 inputs for geometry shaders in gen8+

Iago Toral Quiroga itoral at kemper.freedesktop.org
Thu Sep 28 10:49:01 UTC 2017


Module: Mesa
Branch: master
Commit: 8e627af59d5bd4162911ec9bd3ca7310daf58044
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e627af59d5bd4162911ec9bd3ca7310daf58044

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Wed Sep 27 13:05:39 2017 +0200

i965: enable up to 32 inputs for geometry shaders in gen8+

We have been exposing only 16 since 1e3e72e3054de with arguments
based on register pressure and the number of available GRFs, however,
our scalar backend will always limit the number of push registers
for GS threads to 24 and fallback to pull model for anything else,
so there is really no reason to lower the number under those arguments.

By bumping this up to 32 we make it the same as all the other stages,
which is a nice feature to have that can help applications in some
cases (I recently fixed a bug in CTS that assumed that the number
of input locations in a stage matches the number of output locations
in the previous stage for example).

Pre-gen8, we use the vector backend and push model, so in that case
the arguments in 1e3e72e3054de are still valid.

v2: check if we have scalar GS instead of the hw gen to enable this (Ken).

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/brw_context.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index ee1badd94b..1fd967e424 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -634,7 +634,8 @@ brw_initialize_context_constants(struct brw_context *brw)
    if (devinfo->gen >= 6) {
       ctx->Const.MaxVarying = 32;
       ctx->Const.Program[MESA_SHADER_VERTEX].MaxOutputComponents = 128;
-      ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxInputComponents = 64;
+      ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxInputComponents =
+         compiler->scalar_stage[MESA_SHADER_GEOMETRY] ? 128 : 64;
       ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxOutputComponents = 128;
       ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxInputComponents = 128;
       ctx->Const.Program[MESA_SHADER_TESS_CTRL].MaxInputComponents = 128;




More information about the mesa-commit mailing list