From: Nicolai Hähnle <nicolai.haeh...@amd.com> Sorry for the mess.
I suspect something like this patch is needed. Is this sufficient to fix the problem? Cheers, Nicolai --- src/gallium/drivers/virgl/virgl_tgsi.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/gallium/drivers/virgl/virgl_tgsi.c b/src/gallium/drivers/virgl/virgl_tgsi.c index 7ad1cbdb886..4151e1d8450 100644 --- a/src/gallium/drivers/virgl/virgl_tgsi.c +++ b/src/gallium/drivers/virgl/virgl_tgsi.c @@ -42,36 +42,60 @@ virgl_tgsi_transform_property(struct tgsi_transform_context *ctx, case TGSI_PROPERTY_NUM_CULLDIST_ENABLED: case TGSI_PROPERTY_NEXT_SHADER: break; default: ctx->emit_property(ctx, prop); break; } } static void +virgl_tgsi_transform_declaration(struct tgsi_transform_context *ctx, + struct tgsi_full_declaration *decl) +{ + if (decl->Declaration.File == TGSI_FILE_CONSTANT && + decl->Declaration.Dimension && + decl->Dim.Index2D == 0) + decl->Declaration.Dimension = 0; + + ctx->emit_declaration(ctx, decl); +} + +static void virgl_tgsi_transform_instruction(struct tgsi_transform_context *ctx, struct tgsi_full_instruction *inst) { if (inst->Instruction.Precise) inst->Instruction.Precise = 0; + + for (unsigned i = 0; i < inst->Instruction.NumSrcRegs; ++i) { + struct tgsi_full_src_register *src = &inst->Src[i]; + + if (src->Register.File == TGSI_FILE_CONSTANT && + src->Register.Dimension && + !src->Dimension.Indirect && + src->Dimension.Index == 0) + src->Register.Dimension = 0; + } + ctx->emit_instruction(ctx, inst); } struct tgsi_token *virgl_tgsi_transform(const struct tgsi_token *tokens_in) { struct virgl_transform_context transform; const uint newLen = tgsi_num_tokens(tokens_in); struct tgsi_token *new_tokens; new_tokens = tgsi_alloc_tokens(newLen); if (!new_tokens) return NULL; memset(&transform, 0, sizeof(transform)); transform.base.transform_property = virgl_tgsi_transform_property; transform.base.transform_instruction = virgl_tgsi_transform_instruction; + transform.base.transform_declaration = virgl_tgsi_transform_declaration; tgsi_transform_shader(tokens_in, new_tokens, newLen, &transform.base); return new_tokens; } -- 2.11.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev