On 08.06.2016 01:03, Ilia Mirkin wrote:
On Tue, Jun 7, 2016 at 7:00 PM, Nicolai Hähnle <[email protected]> wrote:@@ -2554,16 +2564,23 @@ st_finalize_texture(struct gl_context *ctx, /* Need to import images in main memory or held in other textures. */ if (stImage && stObj->pt != stImage->pt) { - GLuint height = stObj->height0; - GLuint depth = stObj->depth0; + GLuint height; + GLuint depth;if (stObj->base.Target != GL_TEXTURE_1D_ARRAY) - height = u_minify(height, level); + height = u_minify(ptHeight, level); + else + height = ptLayers; + if (stObj->base.Target == GL_TEXTURE_3D) - depth = u_minify(depth, level); + depth = u_minify(ptDepth, level); + else if (stObj->base.Target == GL_TEXTURE_CUBE_MAP) + depth = 1;Should this be 6? If not, should you divide ptLayers by 6 for CUBE_MAP_ARRAY? [haven't carefully grok'd what you're doing... just observed this inconsistency]
This code is trying to be the inverse of st_gl_texture_dims_to_pipe_dims. Cube maps have GL depth == 1, but cube map arrays have GL depth == number of Gallium layers. The inconsistency is part of OpenGL...
Nicolai
+ else + depth = ptLayers; if (level == 0 || - (stImage->base.Width == u_minify(stObj->width0, level) && + (stImage->base.Width == u_minify(ptWidth, level) && stImage->base.Height == height && stImage->base.Depth == depth)) { /* src image fits expected dest mipmap level size */ @@ -2599,10 +2616,6 @@ st_AllocTextureStorage(struct gl_context *ctx, assert(levels > 0); - /* Save the level=0 dimensions */ - stObj->width0 = width; - stObj->height0 = height; - stObj->depth0 = depth; stObj->lastLevel = levels - 1; fmt = st_mesa_format_to_pipe_format(st, texImage->TexFormat); @@ -2740,9 +2753,6 @@ st_TextureView(struct gl_context *ctx, tex->surface_format = st_mesa_format_to_pipe_format(st_context(ctx), image->TexFormat); - tex->width0 = image->Width; - tex->height0 = image->Height; - tex->depth0 = image->Depth; tex->lastLevel = numLevels - 1; return GL_TRUE; diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index a983d64..33f56ea 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -587,9 +587,6 @@ st_context_teximage(struct st_context_iface *stctxi, } pipe_resource_reference(&stImage->pt, tex); - stObj->width0 = width; - stObj->height0 = height; - stObj->depth0 = depth; stObj->surface_format = pipe_format; _mesa_dirty_texobj(ctx, texObj); diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h index d8cd7c7..ae9e2b4 100644 --- a/src/mesa/state_tracker/st_texture.h +++ b/src/mesa/state_tracker/st_texture.h @@ -79,12 +79,6 @@ struct st_texture_object */ GLuint lastLevel; - /** The size of the level=0 mipmap image. - * Note that the number of 1D array layers will be in height0 and the - * number of 2D array layers will be in depth0, as in GL. - */ - GLuint width0, height0, depth0; - /* On validation any active images held in main memory or in other * textures will be copied to this texture and the old storage freed. */ diff --git a/src/mesa/state_tracker/st_vdpau.c b/src/mesa/state_tracker/st_vdpau.c index 08f2553..dffa52f 100644 --- a/src/mesa/state_tracker/st_vdpau.c +++ b/src/mesa/state_tracker/st_vdpau.c @@ -238,9 +238,6 @@ st_vdpau_map_surface(struct gl_context *ctx, GLenum target, GLenum access, sampler_view = st_texture_get_sampler_view(st, stObj); *sampler_view = st->pipe->create_sampler_view(st->pipe, res, &templ); - stObj->width0 = res->width0; - stObj->height0 = res->height0; - stObj->depth0 = 1; stObj->surface_format = res->format; _mesa_dirty_texobj(ctx, texObj); -- 2.7.4 _______________________________________________ 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
