On Friday, February 06, 2015 07:23:16 PM Francisco Jerez wrote: > Reviewed-by: Paul Berry <stereotype...@gmail.com> > --- > 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 bebb0be..e28c65d 100644 > --- a/src/mesa/drivers/dri/i965/brw_context.h > +++ b/src/mesa/drivers/dri/i965/brw_context.h > @@ -341,6 +341,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; > @@ -621,6 +622,9 @@ struct brw_vs_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 > +
Out of curiosity, why 16? The Windows driver and Nvidia both seem to use 8, while AMD offers 32: http://delphigl.de/glcapsviewer/gl_stats_caps_single.php?listreportsbycap=GL_MAX_IMAGE_UNITS We have 32 texture units on Haswell these days (though honestly, it's pretty arbitrary...we could have more if we wanted...) That's not an objection - I'm just curious. As is, Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> > /** > * Max number of binding table entries used for stream output. > * > @@ -653,6 +657,7 @@ struct brw_vs_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 67d8de4..5c8f3d5 100644 > --- a/src/mesa/drivers/dri/i965/brw_shader.cpp > +++ b/src/mesa/drivers/dri/i965/brw_shader.cpp > @@ -1116,6 +1116,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++; >
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev