[Mesa-dev] [PATCH] mesa/st: NumLayers is only valid for array textures
Marek Olšák
maraeo at gmail.com
Wed Sep 24 02:23:06 PDT 2014
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 <imirkin at 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 <imirkin at 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list