mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
mesa: handle some srgb cases in the fast path in _mesa_get_teximage
Previously, always did unorm8->float/nonlinear-to-linear conversion (using lookup table), then convert back to nonlinear (using the expensive math func pow among others), and finally convert back to int (assuming caller wants unorm8), because the float texture fetch function is used for getting the actual texel values. This should probably all be changed at some point, but for now simply enable the memcpy path also for srgb formats (but if for instance swizzling is required, still the whole conversion will be done).
This commit is contained in:
parent
339544f4bb
commit
be0a2f62f3
1 changed files with 7 additions and 4 deletions
|
|
@ -418,21 +418,24 @@ get_tex_memcpy(struct gl_context *ctx, GLenum format, GLenum type, GLvoid *pixel
|
|||
texObj->Target == GL_TEXTURE_RECTANGLE ||
|
||||
(texObj->Target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
|
||||
texObj->Target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))) {
|
||||
if (texImage->TexFormat == MESA_FORMAT_ARGB8888 &&
|
||||
if ((texImage->TexFormat == MESA_FORMAT_ARGB8888 ||
|
||||
texImage->TexFormat == MESA_FORMAT_SARGB8) &&
|
||||
format == GL_BGRA &&
|
||||
type == GL_UNSIGNED_BYTE &&
|
||||
(type == GL_UNSIGNED_BYTE || type == GL_UNSIGNED_INT_8_8_8_8_REV) &&
|
||||
!ctx->Pack.SwapBytes &&
|
||||
_mesa_little_endian()) {
|
||||
memCopy = GL_TRUE;
|
||||
}
|
||||
else if (texImage->TexFormat == MESA_FORMAT_AL88 &&
|
||||
else if ((texImage->TexFormat == MESA_FORMAT_AL88 ||
|
||||
texImage->TexFormat == MESA_FORMAT_SLA8) &&
|
||||
format == GL_LUMINANCE_ALPHA &&
|
||||
type == GL_UNSIGNED_BYTE &&
|
||||
!ctx->Pack.SwapBytes &&
|
||||
_mesa_little_endian()) {
|
||||
memCopy = GL_TRUE;
|
||||
}
|
||||
else if (texImage->TexFormat == MESA_FORMAT_L8 &&
|
||||
else if ((texImage->TexFormat == MESA_FORMAT_L8 ||
|
||||
texImage->TexFormat == MESA_FORMAT_SL8) &&
|
||||
format == GL_LUMINANCE &&
|
||||
type == GL_UNSIGNED_BYTE) {
|
||||
memCopy = GL_TRUE;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue