radv/xfb: don't increase offset by component mask start.
authorDave Airlie <airlied@redhat.com>
Wed, 31 Oct 2018 02:56:09 +0000 (02:56 +0000)
committerDave Airlie <airlied@redhat.com>
Wed, 31 Oct 2018 23:48:10 +0000 (23:48 +0000)
This is incorrect, the offset is into the buffer, and it's legal
to write

loc 0,0 -> buffer0, offset 0
loc 0,1 -> buffer1, offset 0

This fixes a bunch of piglits running on my zink xfb code on
radv.

Fixes: 6c21645046 (radv: emit stream outputs for vertex and tessellation stages)
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/amd/vulkan/radv_nir_to_llvm.c

index 5ea1755b2a63a88dd3aaf107604a0eadaffa46c2..f56eb01dc5299d338698a9f7026bd557dd4fc156 100644 (file)
@@ -2512,9 +2512,6 @@ radv_emit_stream_output(struct radv_shader_context *ctx,
        /* Get the first component. */
        start = ffs(output->component_mask) - 1;
 
-       /* Adjust the destination offset. */
-       offset += start * 4;
-
        /* Load the output as int. */
        for (int i = 0; i < num_comps; i++) {
                out[i] = ac_to_integer(&ctx->ac,