[Mesa-dev] [PATCH 1/2] i965: retype result of typed atomic operation to the same type as source

Ilia Mirkin imirkin at alum.mit.edu
Mon Feb 22 22:04:45 UTC 2016


On Mon, Feb 22, 2016 at 3:53 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Mon, Feb 22, 2016 at 3:52 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> This fixes atomic exchange with a r32f image, as needed by
>> GL_OES_shader_atomic_exchange.
>
> Sorry, that should be GL_OES_shader_image_atomic of course.
>
>>
>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>> ---
>>  src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp | 6 ++++--
>>  1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> 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..e775cc0 100644
>> --- a/src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp
>> +++ b/src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp
>> @@ -156,8 +156,10 @@ namespace brw {
>>           const fs_reg tmp = bld.vgrf(BRW_REGISTER_TYPE_UD, n);
>>           bld.LOAD_PAYLOAD(tmp, srcs, n, 0);
>>
>> -         return emit_send(bld, SHADER_OPCODE_TYPED_ATOMIC_LOGICAL,
>> -                          addr, tmp, surface, dims, op, rsize);
>> +         return retype(
>> +            emit_send(bld, SHADER_OPCODE_TYPED_ATOMIC_LOGICAL,
>> +                      addr, tmp, surface, dims, op, rsize),
>> +            src0.type);

Actually I've been thinking a bit more about this... relying on
src0.type won't fly. The surface's mesa_format needs to be passed
through to emit_image_atomic, just like it is done for emit_image_load
and emit_image_store. And I need to fix up the vec4 emitter. Curro,
does that sound reasonable? Or should the retype be done at the
emit_image_atomic callsites?

  -ilia


More information about the mesa-dev mailing list