[Mesa-dev] [PATCH] i965/fs: Set pixel/sample mask for compute shaders atomic ops
Jordan Justen
jordan.l.justen at intel.com
Thu Feb 19 15:42:05 PST 2015
For fragment programs, we pull this mask from the payload header. The same
mask doesn't exist for compute shaders, so we set all bits to enabled.
Note: this mask is ANDed with the execution mask, so some channels may not end
up issuing the atomic operation.
Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
Cc: Ben Widawsky <ben at bwidawsk.net>
Cc: Francisco Jerez <currojerez at riseup.net>
---
While it's fresh in our minds. :)
This seems to work for gen7 & gen8 CS. For CS simd16, we need the
0xffff change, but it seems to work fine for simd8 as well.
I also tested gen8 (simd8vs), and there were no piglit regressions.
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 24cc118..960a0aa 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -2998,9 +2998,9 @@ fs_visitor::emit_untyped_atomic(unsigned atomic_op, unsigned surf_index,
* mask sent in the header to compute the actual set of channels that execute
* the atomic operation.
*/
- assert(stage == MESA_SHADER_VERTEX);
+ assert(stage == MESA_SHADER_VERTEX || stage == MESA_SHADER_COMPUTE);
emit(MOV(component(sources[0], 7),
- brw_imm_ud(0xff)))->force_writemask_all = true;
+ brw_imm_ud(0xffff)))->force_writemask_all = true;
}
length++;
@@ -3061,9 +3061,9 @@ fs_visitor::emit_untyped_surface_read(unsigned surf_index, fs_reg dst,
* mask sent in the header to compute the actual set of channels that execute
* the atomic operation.
*/
- assert(stage == MESA_SHADER_VERTEX);
+ assert(stage == MESA_SHADER_VERTEX || stage == MESA_SHADER_COMPUTE);
emit(MOV(component(sources[0], 7),
- brw_imm_ud(0xff)))->force_writemask_all = true;
+ brw_imm_ud(0xffff)))->force_writemask_all = true;
}
/* Set the surface read offset. */
--
2.1.4
More information about the mesa-dev
mailing list