mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
meta: fix incorrect slice, r coordinate computation
The arithmetic to convert a 3D texture slice to an R coordinate was incorrect. Found when MSVC warned of a divide by zero. Note that we don't actually ever hit this path. We don't decompress slices of 3D textures and we don't support 3D mipmap generation yet.
This commit is contained in:
parent
a940c93aac
commit
8bd5692a5d
1 changed files with 9 additions and 4 deletions
|
|
@ -3118,6 +3118,7 @@ setup_texture_coords(GLenum faceTarget,
|
|||
GLint slice,
|
||||
GLint width,
|
||||
GLint height,
|
||||
GLint depth,
|
||||
GLfloat coords0[3],
|
||||
GLfloat coords1[3],
|
||||
GLfloat coords2[3],
|
||||
|
|
@ -3134,8 +3135,11 @@ setup_texture_coords(GLenum faceTarget,
|
|||
case GL_TEXTURE_2D:
|
||||
case GL_TEXTURE_3D:
|
||||
case GL_TEXTURE_2D_ARRAY:
|
||||
if (faceTarget == GL_TEXTURE_3D)
|
||||
r = 1.0F / slice;
|
||||
if (faceTarget == GL_TEXTURE_3D) {
|
||||
assert(slice < depth);
|
||||
assert(depth >= 1);
|
||||
r = (slice + 0.5f) / depth;
|
||||
}
|
||||
else if (faceTarget == GL_TEXTURE_2D_ARRAY)
|
||||
r = slice;
|
||||
else
|
||||
|
|
@ -3574,7 +3578,7 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
|
|||
/* Setup texture coordinates */
|
||||
setup_texture_coords(faceTarget,
|
||||
slice,
|
||||
0, 0, /* width, height never used here */
|
||||
0, 0, 1, /* width, height never used here */
|
||||
verts[0].tex,
|
||||
verts[1].tex,
|
||||
verts[2].tex,
|
||||
|
|
@ -3840,6 +3844,7 @@ decompress_texture_image(struct gl_context *ctx,
|
|||
struct gl_texture_object *texObj = texImage->TexObject;
|
||||
const GLint width = texImage->Width;
|
||||
const GLint height = texImage->Height;
|
||||
const GLint depth = texImage->Height;
|
||||
const GLenum target = texObj->Target;
|
||||
GLenum faceTarget;
|
||||
struct vertex {
|
||||
|
|
@ -3935,7 +3940,7 @@ decompress_texture_image(struct gl_context *ctx,
|
|||
_mesa_BindSampler(ctx->Texture.CurrentUnit, decompress->Sampler);
|
||||
}
|
||||
|
||||
setup_texture_coords(faceTarget, slice, width, height,
|
||||
setup_texture_coords(faceTarget, slice, width, height, depth,
|
||||
verts[0].tex,
|
||||
verts[1].tex,
|
||||
verts[2].tex,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue