meta: Fix ClearTexture with GL_DEPTH_COMPONENT.
We only handled unpacking for GL_DEPTH_STENCIL formats. Cemu was hitting _mesa_problem() for an unsupported format in _mesa_unpack_float_32_uint_24_8_depth_stencil_row(), because the format was depth-only, rather than depth-stencil. Cc: "13.0 12.0" <mesa-stable@lists.freedesktop.org> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94739 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103966 Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
@@ -3510,15 +3510,20 @@ cleartexsubimage_depth_stencil(struct gl_context *ctx,
|
||||
/* Convert the clearValue from whatever format it's in to a floating
|
||||
* point value for the depth and an integer value for the stencil index
|
||||
*/
|
||||
_mesa_unpack_float_32_uint_24_8_depth_stencil_row(texImage->TexFormat,
|
||||
1, /* n */
|
||||
clearValue,
|
||||
depthStencilValue);
|
||||
/* We need a memcpy here instead of a cast because we need to
|
||||
* reinterpret the bytes as a float rather than converting it
|
||||
*/
|
||||
memcpy(&depthValue, depthStencilValue, sizeof depthValue);
|
||||
stencilValue = depthStencilValue[1] & 0xff;
|
||||
if (texImage->_BaseFormat == GL_DEPTH_STENCIL) {
|
||||
_mesa_unpack_float_32_uint_24_8_depth_stencil_row(texImage->TexFormat,
|
||||
1, /* n */
|
||||
clearValue,
|
||||
depthStencilValue);
|
||||
/* We need a memcpy here instead of a cast because we need to
|
||||
* reinterpret the bytes as a float rather than converting it
|
||||
*/
|
||||
memcpy(&depthValue, depthStencilValue, sizeof depthValue);
|
||||
stencilValue = depthStencilValue[1] & 0xff;
|
||||
} else {
|
||||
_mesa_unpack_float_z_row(texImage->TexFormat, 1 /* n */,
|
||||
clearValue, &depthValue);
|
||||
}
|
||||
}
|
||||
|
||||
if (texImage->_BaseFormat == GL_DEPTH_STENCIL)
|
||||
|
||||
Reference in New Issue
Block a user