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 6ab93b367831e3d1891c8e269f792b9a4b414c7d..0e1fefede569e455cd1d55aadf24207207d1513d 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), "");
 }