diff options
| author | erikchen <erikchen@chromium.org> | 2016-03-22 17:07:58 -0700 |
|---|---|---|
| committer | Commit bot <commit-bot@chromium.org> | 2016-03-23 00:09:12 +0000 |
| commit | f38d1ce51f77c495dffb59d9c8d557881f3df448 (patch) | |
| tree | 74771f464cb5db66520656b1bb8e45694afa1797 | |
| parent | ab1bb29984068b61637741beaa03fc50a91c17dc (diff) | |
| download | chromium_src-f38d1ce51f77c495dffb59d9c8d557881f3df448.zip chromium_src-f38d1ce51f77c495dffb59d9c8d557881f3df448.tar.gz chromium_src-f38d1ce51f77c495dffb59d9c8d557881f3df448.tar.bz2 | |
Disable IOSurface clearing on OS X 10.9.
Doing so triggers PDF rendering problems on some GPUs.
BUG=594343
TBR=avi@chromium.org
Review URL: https://codereview.chromium.org/1826613002
Cr-Commit-Position: refs/heads/master@{#382739}
| -rw-r--r-- | ui/gfx/mac/io_surface.cc | 19 | ||||
| -rw-r--r-- | ui/gl/test/gl_image_test_template.h | 12 |
2 files changed, 25 insertions, 6 deletions
diff --git a/ui/gfx/mac/io_surface.cc b/ui/gfx/mac/io_surface.cc index e6079c7..e48a813 100644 --- a/ui/gfx/mac/io_surface.cc +++ b/ui/gfx/mac/io_surface.cc @@ -8,6 +8,7 @@ #include <stdint.h> #include "base/logging.h" +#include "base/mac/mac_util.h" #include "base/mac/mach_logging.h" #include "base/macros.h" #include "ui/gfx/buffer_format_util.h" @@ -150,12 +151,18 @@ IOSurfaceRef CreateIOSurface(const gfx::Size& size, gfx::BufferFormat format) { IOSurfaceRef surface = IOSurfaceCreate(properties); - // Zero-initialize the IOSurface. Calling IOSurfaceLock/IOSurfaceUnlock - // appears to be sufficient. https://crbug.com/584760#c17 - IOReturn r = IOSurfaceLock(surface, 0, nullptr); - DCHECK_EQ(kIOReturnSuccess, r); - r = IOSurfaceUnlock(surface, 0, nullptr); - DCHECK_EQ(kIOReturnSuccess, r); + // For unknown reasons, triggering this lock on OS X 10.9, on certain GPUs, + // causes PDFs to render incorrectly. Hopefully this check can be removed once + // pdfium switches to a Skia backend on Mac. + // https://crbug.com/594343. + if (!base::mac::IsOSMavericks()) { + // Zero-initialize the IOSurface. Calling IOSurfaceLock/IOSurfaceUnlock + // appears to be sufficient. https://crbug.com/584760#c17 + IOReturn r = IOSurfaceLock(surface, 0, nullptr); + DCHECK_EQ(kIOReturnSuccess, r); + r = IOSurfaceUnlock(surface, 0, nullptr); + DCHECK_EQ(kIOReturnSuccess, r); + } return surface; } diff --git a/ui/gl/test/gl_image_test_template.h b/ui/gl/test/gl_image_test_template.h index 28567bc..e10c64c 100644 --- a/ui/gl/test/gl_image_test_template.h +++ b/ui/gl/test/gl_image_test_template.h @@ -13,6 +13,7 @@ #include "base/memory/scoped_ptr.h" #include "base/strings/stringize_macros.h" #include "base/strings/stringprintf.h" +#include "build/build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/buffer_format_util.h" #include "ui/gfx/buffer_types.h" @@ -25,6 +26,10 @@ #include "ui/gl/test/gl_image_test_support.h" #include "ui/gl/test/gl_test_helper.h" +#if defined(OS_MACOSX) +#include "base/mac/mac_util.h" +#endif + namespace gl { namespace { @@ -178,6 +183,13 @@ class GLImageZeroInitializeTest : public GLImageTest<GLImageTestDelegate> {}; TYPED_TEST_CASE_P(GLImageZeroInitializeTest); TYPED_TEST_P(GLImageZeroInitializeTest, ZeroInitialize) { +#if defined(OS_MACOSX) + // This functionality is disabled on Mavericks because it breaks PDF + // rendering. https://crbug.com/594343. + if (base::mac::IsOSMavericks()) + return; +#endif + const gfx::Size image_size(256, 256); GLuint framebuffer = |
