Maybe something similar also needs to be done for cubemaps, because they are just layered textures in disguise?
Marek On Wed, Sep 24, 2014 at 7:01 AM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > For 3d textures, NumLayers is set to 1, which is not what we want. This > fixes the newly added gl-layer-render-storage test (which constructs > immutable 3d textures). Fixes regression introduced in d82bd7eb060. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84145 > Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> > --- > src/mesa/state_tracker/st_atom_texture.c | 2 +- > src/mesa/state_tracker/st_cb_fbo.c | 3 ++- > src/mesa/state_tracker/st_texture.c | 3 ++- > 3 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/src/mesa/state_tracker/st_atom_texture.c > b/src/mesa/state_tracker/st_atom_texture.c > index ed9a444..19072ae 100644 > --- a/src/mesa/state_tracker/st_atom_texture.c > +++ b/src/mesa/state_tracker/st_atom_texture.c > @@ -223,7 +223,7 @@ static unsigned last_level(struct st_texture_object > *stObj) > > static unsigned last_layer(struct st_texture_object *stObj) > { > - if (stObj->base.Immutable) > + if (stObj->base.Immutable && stObj->pt->array_size > 1) > return MIN2(stObj->base.MinLayer + stObj->base.NumLayers - 1, > stObj->pt->array_size - 1); > return stObj->pt->array_size - 1; > diff --git a/src/mesa/state_tracker/st_cb_fbo.c > b/src/mesa/state_tracker/st_cb_fbo.c > index 470ab27..7b6a444 100644 > --- a/src/mesa/state_tracker/st_cb_fbo.c > +++ b/src/mesa/state_tracker/st_cb_fbo.c > @@ -451,7 +451,8 @@ st_update_renderbuffer_surface(struct st_context *st, > } > > /* Adjust for texture views */ > - if (strb->is_rtt) { > + if (strb->is_rtt && resource->array_size > 1 && > + strb->Base.TexImage->TexObject->Immutable) { > struct gl_texture_object *tex = strb->Base.TexImage->TexObject; > first_layer += tex->MinLayer; > if (!strb->rtt_layered) > diff --git a/src/mesa/state_tracker/st_texture.c > b/src/mesa/state_tracker/st_texture.c > index c84aa45..2cd95ec 100644 > --- a/src/mesa/state_tracker/st_texture.c > +++ b/src/mesa/state_tracker/st_texture.c > @@ -263,7 +263,8 @@ st_texture_image_map(struct st_context *st, struct > st_texture_image *stImage, > if (stObj->base.Immutable) { > level += stObj->base.MinLevel; > z += stObj->base.MinLayer; > - d = MIN2(d, stObj->base.NumLayers); > + if (stObj->pt->array_size > 1) > + d = MIN2(d, stObj->base.NumLayers); > } > > z += stImage->base.Face; > -- > 1.8.5.5 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev