[virglrenderer-devel] [PATCH 14/19] tessellation: handle tess interps and dimension changes

Dave Airlie airlied at gmail.com
Fri Jun 8 05:14:18 UTC 2018


From: Dave Airlie <airlied at redhat.com>

---
 src/vrend_shader.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/vrend_shader.c b/src/vrend_shader.c
index 55d1b46..cf972f6 100644
--- a/src/vrend_shader.c
+++ b/src/vrend_shader.c
@@ -921,7 +921,7 @@ iter_declaration(struct tgsi_iterate_context *iter,
       ctx->sviews_used = true;
       break;
    case TGSI_FILE_CONSTANT:
-      if (decl->Declaration.Dimension) {
+      if (decl->Declaration.Dimension && decl->Dim.Index2D != 0) {
          if (ctx->num_ubo >= ARRAY_SIZE(ctx->ubo_idx)) {
             fprintf(stderr, "Number of uniforms exceeded, max is %lu\n", ARRAY_SIZE(ctx->ubo_idx));
             return FALSE;
@@ -2207,7 +2207,7 @@ get_source_info(struct dump_ctx *ctx,
       } else if (src->Register.File == TGSI_FILE_CONSTANT) {
          const char *cname = tgsi_proc_to_prefix(ctx->prog_type);
          int dim = 0;
-         if (src->Register.Dimension) {
+         if (src->Register.Dimension && src->Dimension.Index != 0) {
             dim = src->Dimension.Index;
             if (src->Dimension.Indirect) {
                assert(src->DimIndirect.File == TGSI_FILE_ADDRESS);
@@ -3147,7 +3147,12 @@ static char *emit_ios(struct dump_ctx *ctx, char *glsl_hdr)
                bcolor_emitted[ctx->outputs[i].sid] = true;
          }
          if (!ctx->outputs[i].glsl_predefined_no_emit) {
-            if ((ctx->prog_type == TGSI_PROCESSOR_VERTEX || ctx->prog_type == TGSI_PROCESSOR_GEOMETRY) && (ctx->outputs[i].name == TGSI_SEMANTIC_GENERIC || ctx->outputs[i].name == TGSI_SEMANTIC_COLOR || ctx->outputs[i].name == TGSI_SEMANTIC_BCOLOR)) {
+            if ((ctx->prog_type == TGSI_PROCESSOR_VERTEX ||
+                 ctx->prog_type == TGSI_PROCESSOR_GEOMETRY ||
+                 ctx->prog_type == TGSI_PROCESSOR_TESS_EVAL) &&
+                (ctx->outputs[i].name == TGSI_SEMANTIC_GENERIC ||
+                 ctx->outputs[i].name == TGSI_SEMANTIC_COLOR ||
+                 ctx->outputs[i].name == TGSI_SEMANTIC_BCOLOR)) {
                ctx->num_interps++;
                prefix = INTERP_PREFIX;
             } else
-- 
2.14.3



More information about the virglrenderer-devel mailing list