summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2015-04-23 14:21:31 +0300
committerFrancisco Jerez <currojerez@riseup.net>2015-05-04 15:05:20 +0300
commit2f1c16df3e997771bcedb60ae7f16a21c4c60144 (patch)
treea8aeba71c471b089e7aaabe5704da745d5260980 /src/mesa/drivers/dri/i965/brw_fs_generator.cpp
parent4348046a2f08d9795a158b96f8579f13f5e693e6 (diff)
downloadexternal_mesa3d-2f1c16df3e997771bcedb60ae7f16a21c4c60144.zip
external_mesa3d-2f1c16df3e997771bcedb60ae7f16a21c4c60144.tar.gz
external_mesa3d-2f1c16df3e997771bcedb60ae7f16a21c4c60144.tar.bz2
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 <kenneth@whitecape.org> Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_fs_generator.cpp')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_generator.cpp4
1 files changed, 2 insertions, 2 deletions
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);
}