On 11/04/18 09:22, Timothy Arceri wrote:
On 11/04/18 09:18, Timothy Arceri wrote:
On 11/04/18 08:58, Jason Ekstrand wrote:
On Tue, Apr 10, 2018 at 3:16 PM, Timothy Arceri <tarc...@itsqueeze.com <mailto:tarc...@itsqueeze.com>> wrote:

    On 11/04/18 01:11, Jason Ekstrand wrote:

        On Tue, Apr 10, 2018 at 8:05 AM, Karol Herbst
        <kher...@redhat.com <mailto:kher...@redhat.com>
        <mailto:kher...@redhat.com <mailto:kher...@redhat.com>>> wrote:

             If the bindless image is passed through a struct we ended
        up getting the
             glsl_type of the struct, not the image.

             variable_referenced points to the declaration of the
        struct, so it
             won't work
             for bindless images. So just drop it.

             Signed-off-by: Karol Herbst <kher...@redhat.com
             <mailto:kher...@redhat.com <mailto:kher...@redhat.com>>>
               src/compiler/glsl/glsl_to_nir.cpp | 2 +-
               1 file changed, 1 insertion(+), 1 deletion(-)

             diff --git a/src/compiler/glsl/glsl_to_nir.cpp
             index 9f233637306..bb9ba3af04a 100644
             --- a/src/compiler/glsl/glsl_to_nir.cpp
             +++ b/src/compiler/glsl/glsl_to_nir.cpp
             @@ -893,7 +893,7 @@ nir_visitor::visit(ir_call *ir)
                        exec_node *param = ir->actual_parameters.get_head();
                        ir_dereference *image = (ir_dereference *)param;
                        const glsl_type *type =
             - image->variable_referenced()->type->without_array();
             +            image->type->without_array();

        I asked this question on the last version as well: Do we really
        need without_array()?

    And I replied to that question as well :P

    The struct member type is set in ir.cpp without removing the array:

        this->type = this->record->type->field_type(field);

I'm not sure what you mean though.  if we have an array dereference, it will strip one array level off of the type for each array dereference.

The code doesn't walk over the derefs it just returns the type of the deref parameter so we need to strip of the arrays ourselves.

Thinking about it some more I don't think this change would work for the deref of a struct member when the struct itsself is also an array.

Or nested structs for that matter.
mesa-dev mailing list

Reply via email to