radv: trim buffer load result (fixes dota2)
authorDave Airlie <airlied@redhat.com>
Thu, 11 Jan 2018 02:10:23 +0000 (02:10 +0000)
committerDave Airlie <airlied@redhat.com>
Fri, 12 Jan 2018 00:41:55 +0000 (00:41 +0000)
Running dota2 since the below commit crashes with an llvm assert.

Trim the vector like the other user. This possible could also be
avoided by not padding inside the load vec3->vec4.

Fixes: 41c36c4549 (amd/common: use ac_build_buffer_load() for emitting UBO loads)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/common/ac_nir_to_llvm.c

index 6ab93b3..0e1fefe 100644 (file)
@@ -2607,7 +2607,7 @@ static LLVMValueRef visit_load_ubo_buffer(struct ac_nir_context *ctx,
 
        ret = ac_build_buffer_load(&ctx->ac, rsrc, num_components, NULL, offset,
                                   NULL, 0, false, false, true, true);
-
+       ret = trim_vector(&ctx->ac, ret, num_components);
        return LLVMBuildBitCast(ctx->ac.builder, ret,
                                get_def_type(ctx, &instr->dest.ssa), "");
 }