r600/ssbo: fix multi-dword buffer loads.
This fixes loading from different channels. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
989697eccc
commit
a256506b76
|
@ -8005,17 +8005,19 @@ static int tgsi_load_buffer(struct r600_shader_ctx *ctx)
|
||||||
vtx.format_comp_all = 1;
|
vtx.format_comp_all = 1;
|
||||||
vtx.srf_mode_all = 0;
|
vtx.srf_mode_all = 0;
|
||||||
|
|
||||||
if (inst->Dst[0].Register.WriteMask == 0xf) {
|
if (inst->Dst[0].Register.WriteMask & 8) {
|
||||||
vtx.data_format = FMT_32_32_32_32;
|
vtx.data_format = FMT_32_32_32_32;
|
||||||
vtx.use_const_fields = 0;
|
vtx.use_const_fields = 0;
|
||||||
} else if (inst->Dst[0].Register.WriteMask == 0x7) {
|
} else if (inst->Dst[0].Register.WriteMask & 4) {
|
||||||
vtx.data_format = FMT_32_32_32;
|
vtx.data_format = FMT_32_32_32;
|
||||||
vtx.use_const_fields = 0;
|
vtx.use_const_fields = 0;
|
||||||
} else if (inst->Dst[0].Register.WriteMask == 0x3) {
|
} else if (inst->Dst[0].Register.WriteMask & 2) {
|
||||||
vtx.data_format = FMT_32_32;
|
vtx.data_format = FMT_32_32;
|
||||||
vtx.use_const_fields = 0;
|
vtx.use_const_fields = 0;
|
||||||
} else
|
} else {
|
||||||
vtx.use_const_fields = 1;
|
vtx.data_format = FMT_32;
|
||||||
|
vtx.use_const_fields = 0;
|
||||||
|
}
|
||||||
|
|
||||||
r = r600_bytecode_add_vtx_tc(ctx->bc, &vtx);
|
r = r600_bytecode_add_vtx_tc(ctx->bc, &vtx);
|
||||||
if (r)
|
if (r)
|
||||||
|
|
Loading…
Reference in New Issue