Disable unpack row length when uploading mips
When uploading multiple mip levels, the current path which uses GL_UNPACK_ROW_LENGTH doesn't work (it fails to reset this value, and is set incorrectly for subsequent mip levels). This leads to crashes as the buffer Skia provides to GL is not sized correctly. This change temporarily disables the GL_UNPACK_ROW_LENGTH path when we are uploading mips. This path was an optimization, so everything should continue working as expected. This is a temporary workaround until we can re-structure the code to set GL_UNPACK_ROW_LENGTH per mip level. BUG=609612 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1965973002 Review-Url: https://codereview.chromium.org/1965973002
This commit is contained in:
parent
f077324e13
commit
154349b6ff
@ -1278,7 +1278,12 @@ bool GrGLGpu::uploadTexData(const GrSurfaceDesc& desc,
|
||||
restoreGLRowLength = false;
|
||||
|
||||
const size_t rowBytes = texelsShallowCopy[currentMipLevel].fRowBytes;
|
||||
if (caps.unpackRowLengthSupport() && !swFlipY) {
|
||||
|
||||
// TODO: This optimization should be enabled with or without mips.
|
||||
// For use with mips, we must set GR_GL_UNPACK_ROW_LENGTH once per
|
||||
// mip level, before calling glTexImage2D.
|
||||
const bool usesMips = texelsShallowCopy.count() > 1;
|
||||
if (caps.unpackRowLengthSupport() && !swFlipY && !usesMips) {
|
||||
// can't use this for flipping, only non-neg values allowed. :(
|
||||
if (rowBytes != trimRowBytes) {
|
||||
GrGLint rowLength = static_cast<GrGLint>(rowBytes / bpp);
|
||||
|
Loading…
Reference in New Issue
Block a user