[Mesa-dev] [PATCH 01/25] i965: Allocate binding table space for shader images.
Francisco Jerez
currojerez at riseup.net
Mon Dec 2 11:39:09 PST 2013
---
src/mesa/drivers/dri/i965/brw_context.h | 5 +++++
src/mesa/drivers/dri/i965/brw_shader.cpp | 7 +++++++
2 files changed, 12 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index 1387aa9..3f2edcf 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -345,6 +345,7 @@ struct brw_stage_prog_data {
uint32_t gather_texture_start;
uint32_t ubo_start;
uint32_t abo_start;
+ uint32_t image_start;
uint32_t shader_time_start;
/** @} */
} binding_table;
@@ -656,6 +657,9 @@ struct brw_gs_prog_data
/** Max number of atomic counter buffer objects in a shader */
#define BRW_MAX_ABO 16
+/** Max number of image units in a shader */
+#define BRW_MAX_IMAGES 16
+
/**
* Max number of binding table entries used for stream output.
*
@@ -688,6 +692,7 @@ struct brw_gs_prog_data
BRW_MAX_TEX_UNIT * 2 + /* normal, gather */ \
12 + /* ubo */ \
BRW_MAX_ABO + \
+ BRW_MAX_IMAGES + \
2 /* shader time, pull constants */)
#define SURF_INDEX_GEN6_SOL_BINDING(t) (t)
diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp
index 8e41160..128354a 100644
--- a/src/mesa/drivers/dri/i965/brw_shader.cpp
+++ b/src/mesa/drivers/dri/i965/brw_shader.cpp
@@ -722,6 +722,13 @@ backend_visitor::assign_common_binding_table_offsets(uint32_t next_binding_table
stage_prog_data->binding_table.abo_start = 0xd0d0d0d0;
}
+ if (shader && shader->base.NumImages) {
+ stage_prog_data->binding_table.image_start = next_binding_table_offset;
+ next_binding_table_offset += shader->base.NumImages;
+ } else {
+ stage_prog_data->binding_table.image_start = 0xd0d0d0d0;
+ }
+
/* This may or may not be used depending on how the compile goes. */
stage_prog_data->binding_table.pull_constants_start = next_binding_table_offset;
next_binding_table_offset++;
--
1.8.3.4
More information about the mesa-dev
mailing list