mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 15:20:17 +01:00
mesa: fix texstore addressing bugs for depth/stencil formats
Using GLuint pointers worked when the pixel size was four bytes or the row stride was a multiple of four but was otherwise broken. Fixes failures found with the piglit fbo-stencil test. This helps to fix https://bugs.freedesktop.org/show_bug.cgi?id=38729 NOTE: This is a candidate for the 7.11 branch.
This commit is contained in:
parent
057a107d44
commit
b786db0654
1 changed files with 9 additions and 12 deletions
|
|
@ -3303,8 +3303,7 @@ _mesa_texstore_z24_s8(TEXSTORE_PARAMS)
|
|||
{
|
||||
const GLuint depthScale = 0xffffff;
|
||||
const GLint srcRowStride
|
||||
= _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, srcType)
|
||||
/ sizeof(GLuint);
|
||||
= _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, srcType);
|
||||
GLint img, row;
|
||||
|
||||
ASSERT(dstFormat == MESA_FORMAT_Z24_S8);
|
||||
|
|
@ -3332,8 +3331,8 @@ _mesa_texstore_z24_s8(TEXSTORE_PARAMS)
|
|||
+ dstImageOffsets[dstZoffset + img]
|
||||
+ dstYoffset * dstRowStride / sizeof(GLuint)
|
||||
+ dstXoffset;
|
||||
const GLuint *src
|
||||
= (const GLuint *) _mesa_image_address(dims, srcPacking, srcAddr,
|
||||
const GLubyte *src
|
||||
= (const GLubyte *) _mesa_image_address(dims, srcPacking, srcAddr,
|
||||
srcWidth, srcHeight,
|
||||
srcFormat, srcType,
|
||||
img, 0, 0);
|
||||
|
|
@ -3390,8 +3389,7 @@ _mesa_texstore_s8_z24(TEXSTORE_PARAMS)
|
|||
{
|
||||
const GLuint depthScale = 0xffffff;
|
||||
const GLint srcRowStride
|
||||
= _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, srcType)
|
||||
/ sizeof(GLuint);
|
||||
= _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, srcType);
|
||||
GLint img, row;
|
||||
|
||||
ASSERT(dstFormat == MESA_FORMAT_S8_Z24);
|
||||
|
|
@ -3406,8 +3404,8 @@ _mesa_texstore_s8_z24(TEXSTORE_PARAMS)
|
|||
+ dstImageOffsets[dstZoffset + img]
|
||||
+ dstYoffset * dstRowStride / sizeof(GLuint)
|
||||
+ dstXoffset;
|
||||
const GLuint *src
|
||||
= (const GLuint *) _mesa_image_address(dims, srcPacking, srcAddr,
|
||||
const GLubyte *src
|
||||
= (const GLubyte *) _mesa_image_address(dims, srcPacking, srcAddr,
|
||||
srcWidth, srcHeight,
|
||||
srcFormat, srcType,
|
||||
img, 0, 0);
|
||||
|
|
@ -3479,8 +3477,7 @@ _mesa_texstore_s8(TEXSTORE_PARAMS)
|
|||
}
|
||||
else {
|
||||
const GLint srcRowStride
|
||||
= _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, srcType)
|
||||
/ sizeof(GLuint);
|
||||
= _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, srcType);
|
||||
GLint img, row;
|
||||
|
||||
for (img = 0; img < srcDepth; img++) {
|
||||
|
|
@ -3488,8 +3485,8 @@ _mesa_texstore_s8(TEXSTORE_PARAMS)
|
|||
+ dstImageOffsets[dstZoffset + img]
|
||||
+ dstYoffset * dstRowStride / sizeof(GLuint)
|
||||
+ dstXoffset;
|
||||
const GLuint *src
|
||||
= (const GLuint *) _mesa_image_address(dims, srcPacking, srcAddr,
|
||||
const GLubyte *src
|
||||
= (const GLubyte *) _mesa_image_address(dims, srcPacking, srcAddr,
|
||||
srcWidth, srcHeight,
|
||||
srcFormat, srcType,
|
||||
img, 0, 0);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue