--- 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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev