From 2f1c16df3e997771bcedb60ae7f16a21c4c60144 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Thu, 23 Apr 2015 14:21:31 +0300 Subject: i965: Fix the untyped surface opcodes to deal with indirect surface access. Change brw_untyped_atomic() and brw_untyped_surface_read() to take the surface index as a register instead of a constant and to use brw_send_indirect_message() to emit the indirect variant of send with a dynamically calculated message descriptor. This will be required to support variable indexing of image arrays for ARB_shader_image_load_store. Acked-by: Kenneth Graunke Reviewed-by: Topi Pohjolainen --- src/mesa/drivers/dri/i965/brw_fs_generator.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mesa/drivers/dri/i965/brw_fs_generator.cpp') diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp index 9ddba3a..e28f443 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp @@ -1540,7 +1540,7 @@ fs_generator::generate_untyped_atomic(fs_inst *inst, struct brw_reg dst, surf_index.type == BRW_REGISTER_TYPE_UD); brw_untyped_atomic(p, dst, payload, - atomic_op.dw1.ud, surf_index.dw1.ud, + surf_index, atomic_op.dw1.ud, inst->mlen, true); brw_mark_surface_used(prog_data, surf_index.dw1.ud); @@ -1554,7 +1554,7 @@ fs_generator::generate_untyped_surface_read(fs_inst *inst, struct brw_reg dst, assert(surf_index.file == BRW_IMMEDIATE_VALUE && surf_index.type == BRW_REGISTER_TYPE_UD); - brw_untyped_surface_read(p, dst, payload, surf_index.dw1.ud, inst->mlen, 1); + brw_untyped_surface_read(p, dst, payload, surf_index, inst->mlen, 1); brw_mark_surface_used(prog_data, surf_index.dw1.ud); } -- cgit v1.1