[Mesa-dev] [PATCH 5/5] mesa/st: enable AMD_vertex_shader_viewport_index

Ilia Mirkin imirkin at alum.mit.edu
Wed Jul 2 13:30:56 PDT 2014


The assumption is that any driver capable of emitting layer from the
vertex shader and supporting viewports should be able to also handle
emitting viewport index from the vertex shader.

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
Tested-by: Tobias Droste <tdroste at gmx.de>
---
 docs/relnotes/10.3.html                | 2 +-
 src/mesa/state_tracker/st_extensions.c | 2 ++
 src/mesa/state_tracker/st_program.c    | 4 ++++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/docs/relnotes/10.3.html b/docs/relnotes/10.3.html
index 6090a92..2e718fc 100644
--- a/docs/relnotes/10.3.html
+++ b/docs/relnotes/10.3.html
@@ -55,7 +55,7 @@ Note: some of the new features are only available with certain drivers.
 <li>GL_ARB_viewport_array on nvc0</li>
 <li>GL_ARB_seamless_cubemap_per_texture on i965, llvmpipe, nvc0, r600, radeonsi, softpipe</li>
 <li>GL_ARB_fragment_layer_viewport on nv50, nvc0, llvmpipe, r600</li>
-<li>GL_AMD_vertex_shader_viewport_index on i965/gen7+</li>
+<li>GL_AMD_vertex_shader_viewport_index on i965/gen7+, r600</li>
 </ul>
 
 
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index 9824135..b8b3d50 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -816,6 +816,8 @@ void st_init_extensions(struct st_context *st)
          ctx->Const.ViewportBounds.Max = 16384.0;
          ctx->Extensions.ARB_viewport_array = GL_TRUE;
          ctx->Extensions.ARB_fragment_layer_viewport = GL_TRUE;
+         if (ctx->Extensions.AMD_vertex_shader_layer)
+            ctx->Extensions.AMD_vertex_shader_viewport_index = GL_TRUE;
       }
    }
    if (ctx->Const.MaxProgramTextureGatherComponents > 0)
diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
index 1df411c..3570557 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -262,6 +262,10 @@ st_prepare_vertex_program(struct gl_context *ctx,
             stvp->output_semantic_name[slot] = TGSI_SEMANTIC_LAYER;
             stvp->output_semantic_index[slot] = 0;
             break;
+         case VARYING_SLOT_VIEWPORT:
+            stvp->output_semantic_name[slot] = TGSI_SEMANTIC_VIEWPORT_INDEX;
+            stvp->output_semantic_index[slot] = 0;
+            break;
 
          case VARYING_SLOT_TEX0:
          case VARYING_SLOT_TEX1:
-- 
1.8.5.5



More information about the mesa-dev mailing list