Interesting, I didn't know about that. Nevermind. st/mesa indeed sets it to 6.
Marek On Wed, Sep 24, 2014 at 6:26 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > On Wed, Sep 24, 2014 at 12:20 PM, Marek Olšák <mar...@gmail.com> wrote: >> Cubemaps have array_size == 1, but you can still set the target to 2D > > Are you *sure* about that? Everything I'm seeing indicates that > cubemaps have array_size == 6. For example this code in nv50_tex.c: > > depth = MAX2(mt->base.base.array_size, mt->base.base.depth0); > ... > case PIPE_TEXTURE_CUBE: > depth /= 6; > ... > >> and set first_layer <= last_layer <= 6 in the sample view. Instead of >> checking array_size, maybe NumLayers should be used instead. Just >> guessing. >> >> Marek >> >> On Wed, Sep 24, 2014 at 5:05 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote: >>> The disguise of cubemap's layeredness is insufficient to trip up this >>> code :) They still get their NumLayers set, and the resources still >>> have an array size. Perhaps there's a scenario I'm not considering? >>> >>> On Wed, Sep 24, 2014 at 5:23 AM, Marek Olšák <mar...@gmail.com> wrote: >>>> 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