mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 683514 - Use GL_EXT_unpack_subimage when available (part 2). r=joe
The previous patch used the extension in GLContext::TexImage2D, but not TexSubImage2D. This patch corrects that and makes sure to use the extension in both cases.
This commit is contained in:
parent
870639f5e4
commit
7ab85e1b14
@ -1854,9 +1854,9 @@ GLContext::TexImage2D(GLenum target, GLint level, GLint internalformat,
|
||||
if (rowLength > mMaxTextureSize)
|
||||
useUnpackRowLength = false;
|
||||
|
||||
if (useUnpackRowLength)
|
||||
if (useUnpackRowLength) {
|
||||
fPixelStorei(LOCAL_GL_UNPACK_ROW_LENGTH, rowLength);
|
||||
else if (stride != width * pixelsize) {
|
||||
} else if (stride != width * pixelsize) {
|
||||
// Not using the whole row of texture data and GLES doesn't
|
||||
// support GL_UNPACK_ROW_LENGTH. We need to upload each row
|
||||
// separately.
|
||||
@ -1916,9 +1916,18 @@ GLContext::TexSubImage2D(GLenum target, GLint level,
|
||||
GetAddressAlignment((ptrdiff_t)stride)));
|
||||
|
||||
#ifndef USE_GLES2
|
||||
fPixelStorei(LOCAL_GL_UNPACK_ROW_LENGTH, stride/pixelsize);
|
||||
bool useUnpackRowLength = true;
|
||||
#else
|
||||
if (stride != width * pixelsize) {
|
||||
bool useUnpackRowLength = IsExtensionSupported(EXT_unpack_subimage);
|
||||
#endif
|
||||
|
||||
int rowLength = stride/pixelsize;
|
||||
if (rowLength > mMaxTextureSize)
|
||||
useUnpackRowLength = false;
|
||||
|
||||
if (useUnpackRowLength) {
|
||||
fPixelStorei(LOCAL_GL_UNPACK_ROW_LENGTH, rowLength);
|
||||
} else if (stride != width * pixelsize) {
|
||||
// Not using the whole row of texture data and GLES doesn't
|
||||
// support GL_UNPACK_ROW_LENGTH. We need to upload each row
|
||||
// separately.
|
||||
@ -1940,7 +1949,6 @@ GLContext::TexSubImage2D(GLenum target, GLint level,
|
||||
fPixelStorei(LOCAL_GL_UNPACK_ALIGNMENT, 4);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
fTexSubImage2D(target,
|
||||
level,
|
||||
@ -1952,9 +1960,8 @@ GLContext::TexSubImage2D(GLenum target, GLint level,
|
||||
type,
|
||||
pixels);
|
||||
|
||||
#ifndef USE_GLES2
|
||||
fPixelStorei(LOCAL_GL_UNPACK_ROW_LENGTH, 0);
|
||||
#endif
|
||||
if (useUnpackRowLength)
|
||||
fPixelStorei(LOCAL_GL_UNPACK_ROW_LENGTH, 0);
|
||||
fPixelStorei(LOCAL_GL_UNPACK_ALIGNMENT, 4);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user