I think this is probably mostly ok. There's still some question about exactly what gets stored there and who is storing it.
On Thu, Jan 17, 2019 at 4:34 AM apinheiro <[email protected]> wrote: > I was waiting Jason to chime in, but just in case he is too busy I took > a look in detail to the patch. It LGTM, so assuming it passes intel CI: > > Reviewed-by: Alejandro PiƱeiro <[email protected]> > > On 15/1/19 12:08, Sergii Romantsov wrote: > > During conversion type-length was lost due to math. > > > > CC: Jason Ekstrand <[email protected]> > > Fixes: 44227453ec03 (nir: Switch to using 1-bit Booleans for almost > everything) > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109353 > > Signed-off-by: Sergii Romantsov <[email protected]> > > --- > > src/compiler/spirv/spirv_to_nir.c | 9 ++++++--- > > 1 file changed, 6 insertions(+), 3 deletions(-) > > > > diff --git a/src/compiler/spirv/spirv_to_nir.c > b/src/compiler/spirv/spirv_to_nir.c > > index e3dc619..faad771 100644 > > --- a/src/compiler/spirv/spirv_to_nir.c > > +++ b/src/compiler/spirv/spirv_to_nir.c > > @@ -1042,14 +1042,16 @@ vtn_type_layout_std430(struct vtn_builder *b, > struct vtn_type *type, > > { > > switch (type->base_type) { > > case vtn_base_type_scalar: { > > - uint32_t comp_size = glsl_get_bit_size(type->type) / 8; > > + uint32_t comp_size = glsl_type_is_boolean(type->type) > > + ? 1 : glsl_get_bit_size(type->type) / 8; > Because we don't know in spirv_to_nir what size the back-end is going to use for booleans, we should assume they're 32-bit and use 4 here and below. Otherwise, we may end up with booleans overlapping other stuff. > > *size_out = comp_size; > > *align_out = comp_size; > > return type; > > } > > > > case vtn_base_type_vector: { > > - uint32_t comp_size = glsl_get_bit_size(type->type) / 8; > > + uint32_t comp_size = glsl_type_is_boolean(type->type) > > + ? 1 : glsl_get_bit_size(type->type) / 8; > > unsigned align_comps = type->length == 3 ? 4 : type->length; > > *size_out = comp_size * type->length, > > *align_out = comp_size * align_comps; > > @@ -1168,7 +1170,8 @@ vtn_handle_type(struct vtn_builder *b, SpvOp > opcode, > > val->type->base_type = vtn_base_type_vector; > > val->type->type = > glsl_vector_type(glsl_get_base_type(base->type), elems); > > val->type->length = elems; > > - val->type->stride = glsl_get_bit_size(base->type) / 8; > > + val->type->stride = glsl_type_is_boolean(val->type->type) > > + ? 1 : glsl_get_bit_size(base->type) / 8; > > val->type->array_element = base; > > break; > > } > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
