Ilia Mirkin <imir...@alum.mit.edu> writes: > On Mon, Feb 22, 2016 at 9:40 PM, Francisco Jerez <curroje...@riseup.net> > wrote: >> So the result is of float type if we're implementing the float >> overload of imageAtomicExchange. This is the only back-end change >> required to support OES_shader_image_atomic AFAICT. >> --- >> src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp >> b/src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp >> index 081dbad..75734d2 100644 >> --- a/src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp >> +++ b/src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp >> @@ -1125,7 +1125,7 @@ namespace brw { >> if (rsize && pred) >> set_predicate(pred, bld.SEL(tmp, tmp, brw_imm_d(0))); >> >> - return tmp; >> + return retype(tmp, src0.type); > > I had chosen to stick this into emit_typed_atomic -- the typed-ness > seemed to fit better there. Your call though, this is just a thought. > Yeah, I had noticed this difference. The reason for doing it here is that all surface_access::emit_(un)typed_something() calls take a raw UD payload as argument and return a raw UD result. They're just thin wrappers around the logical send opcode and they don't necessarily give you a return value represented in any of the native types supported by the EU, not even for the typed messages which usually still need some sort of unpacking, format conversion and bitcast to the correct type. The brw::surface_access functions really just deal with binary blobs of data represented as vectors of UDs and have no idea what format the data is stored in. emit_image_* OTOH are expected to honour input types and preserve type consistency so this really seemed like a bug in there to me.
>> } >> } >> } >> -- >> 2.7.0 >>
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev