On Mon, Nov 14, 2016 at 5:41 PM, Kenneth Graunke <kenn...@whitecape.org> wrote:
> We need to calculate the number of vec4 slots correctly. > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/mesa/drivers/dri/i965/brw_fs.h | 2 +- > src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 4 +++- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.h > b/src/mesa/drivers/dri/i965/brw_fs.h > index da01174..6446a61 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.h > +++ b/src/mesa/drivers/dri/i965/brw_fs.h > @@ -191,7 +191,7 @@ public: > > void emit_nir_code(); > void nir_setup_single_output_varying(fs_reg *reg, const glsl_type > *type, > - unsigned *location); > + bool is_compact, unsigned > *location); > Something appears to be missing here. You change a prototype but I don't see you changing the actual function anywhere. > void nir_setup_outputs(); > void nir_setup_uniforms(); > void nir_emit_system_values(); > diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > index e770502..82e22c2 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > @@ -55,7 +55,9 @@ fs_visitor::nir_setup_outputs() > return; > > nir_foreach_variable(var, &nir->outputs) { > - const unsigned vec4s = type_size_vec4(var->type); > + const unsigned vec4s = > + var->data.compact ? DIV_ROUND_UP(glsl_get_length(var->type), 4) > + : type_size_vec4(var->type); > fs_reg reg = bld.vgrf(BRW_REGISTER_TYPE_F, 4 * vec4s); > for (unsigned i = 0; i < vec4s; i++) { > if (outputs[var->data.driver_location + i].file == BAD_FILE) > -- > 2.10.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev