Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(395)

Side by Side Diff: third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp

Issue 2439073003: DrawingBuffer: Add checks for state restorer (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2010, Google Inc. All rights reserved. 2 * Copyright (c) 2010, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 ScopedStateRestorer scopedStateRestorer(this); 244 ScopedStateRestorer scopedStateRestorer(this);
245 bool forceGpuResult = false; 245 bool forceGpuResult = false;
246 return prepareTextureMailboxInternal(outMailbox, outReleaseCallback, 246 return prepareTextureMailboxInternal(outMailbox, outReleaseCallback,
247 forceGpuResult); 247 forceGpuResult);
248 } 248 }
249 249
250 bool DrawingBuffer::prepareTextureMailboxInternal( 250 bool DrawingBuffer::prepareTextureMailboxInternal(
251 cc::TextureMailbox* outMailbox, 251 cc::TextureMailbox* outMailbox,
252 std::unique_ptr<cc::SingleReleaseCallback>* outReleaseCallback, 252 std::unique_ptr<cc::SingleReleaseCallback>* outReleaseCallback,
253 bool forceGpuResult) { 253 bool forceGpuResult) {
254 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
255 CHECK(m_stateRestorer);
254 if (m_destructionInProgress) { 256 if (m_destructionInProgress) {
255 // It can be hit in the following sequence. 257 // It can be hit in the following sequence.
256 // 1. WebGL draws something. 258 // 1. WebGL draws something.
257 // 2. The compositor begins the frame. 259 // 2. The compositor begins the frame.
258 // 3. Javascript makes a context lost using WEBGL_lose_context extension. 260 // 3. Javascript makes a context lost using WEBGL_lose_context extension.
259 // 4. Here. 261 // 4. Here.
260 return false; 262 return false;
261 } 263 }
262 ASSERT(!m_isHidden); 264 ASSERT(!m_isHidden);
263 if (!m_contentsChanged) 265 if (!m_contentsChanged)
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 RefPtr<DrawingBuffer>(this), 315 RefPtr<DrawingBuffer>(this),
314 WTF::passed(std::move(bitmap)), m_size); 316 WTF::passed(std::move(bitmap)), m_size);
315 *outReleaseCallback = 317 *outReleaseCallback =
316 cc::SingleReleaseCallback::Create(convertToBaseCallback(std::move(func))); 318 cc::SingleReleaseCallback::Create(convertToBaseCallback(std::move(func)));
317 return true; 319 return true;
318 } 320 }
319 321
320 bool DrawingBuffer::finishPrepareTextureMailboxGpu( 322 bool DrawingBuffer::finishPrepareTextureMailboxGpu(
321 cc::TextureMailbox* outMailbox, 323 cc::TextureMailbox* outMailbox,
322 std::unique_ptr<cc::SingleReleaseCallback>* outReleaseCallback) { 324 std::unique_ptr<cc::SingleReleaseCallback>* outReleaseCallback) {
325 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
326 CHECK(m_stateRestorer);
323 if (m_webGLVersion > WebGL1) { 327 if (m_webGLVersion > WebGL1) {
324 m_stateRestorer->setPixelUnpackBufferBindingDirty(); 328 m_stateRestorer->setPixelUnpackBufferBindingDirty();
325 m_gl->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); 329 m_gl->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
326 } 330 }
327 331
328 // Specify the buffer that we will put in the mailbox. 332 // Specify the buffer that we will put in the mailbox.
329 RefPtr<ColorBuffer> colorBufferForMailbox; 333 RefPtr<ColorBuffer> colorBufferForMailbox;
330 if (m_preserveDrawingBuffer == Discard) { 334 if (m_preserveDrawingBuffer == Discard) {
331 // If we can discard the backbuffer, send the old backbuffer directly 335 // If we can discard the backbuffer, send the old backbuffer directly
332 // into the mailbox, and allocate (or recycle) a new backbuffer. 336 // into the mailbox, and allocate (or recycle) a new backbuffer.
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 defaultBufferRequiresAlphaChannelToBePreserved() ? GL_RGBA : GL_RGB; 564 defaultBufferRequiresAlphaChannelToBePreserved() ? GL_RGBA : GL_RGB;
561 parameters.creationInternalColorFormat = format; 565 parameters.creationInternalColorFormat = format;
562 parameters.internalColorFormat = format; 566 parameters.internalColorFormat = format;
563 parameters.colorFormat = format; 567 parameters.colorFormat = format;
564 } 568 }
565 return parameters; 569 return parameters;
566 } 570 }
567 571
568 PassRefPtr<DrawingBuffer::ColorBuffer> 572 PassRefPtr<DrawingBuffer::ColorBuffer>
569 DrawingBuffer::createOrRecycleColorBuffer() { 573 DrawingBuffer::createOrRecycleColorBuffer() {
574 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
575 CHECK(m_stateRestorer);
570 if (!m_recycledColorBufferQueue.isEmpty()) { 576 if (!m_recycledColorBufferQueue.isEmpty()) {
571 RefPtr<ColorBuffer> recycled = m_recycledColorBufferQueue.takeLast(); 577 RefPtr<ColorBuffer> recycled = m_recycledColorBufferQueue.takeLast();
572 if (recycled->receiveSyncToken.HasData()) 578 if (recycled->receiveSyncToken.HasData())
573 m_gl->WaitSyncTokenCHROMIUM(recycled->receiveSyncToken.GetData()); 579 m_gl->WaitSyncTokenCHROMIUM(recycled->receiveSyncToken.GetData());
574 DCHECK(recycled->size == m_size); 580 DCHECK(recycled->size == m_size);
575 return recycled; 581 return recycled;
576 } 582 }
577 return createColorBuffer(m_size); 583 return createColorBuffer(m_size);
578 } 584 }
579 585
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 m_multisampleFBO = 0; 801 m_multisampleFBO = 0;
796 m_fbo = 0; 802 m_fbo = 0;
797 803
798 if (m_layer) 804 if (m_layer)
799 GraphicsLayer::unregisterContentsLayer(m_layer->layer()); 805 GraphicsLayer::unregisterContentsLayer(m_layer->layer());
800 806
801 m_client = nullptr; 807 m_client = nullptr;
802 } 808 }
803 809
804 bool DrawingBuffer::resizeDefaultFramebuffer(const IntSize& size) { 810 bool DrawingBuffer::resizeDefaultFramebuffer(const IntSize& size) {
811 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
812 CHECK(m_stateRestorer);
805 // Recreate m_backColorBuffer. 813 // Recreate m_backColorBuffer.
806 m_backColorBuffer = createColorBuffer(size); 814 m_backColorBuffer = createColorBuffer(size);
807 815
808 attachColorBufferToReadFramebuffer(); 816 attachColorBufferToReadFramebuffer();
809 817
810 if (wantExplicitResolve()) { 818 if (wantExplicitResolve()) {
811 m_stateRestorer->setFramebufferBindingDirty(); 819 m_stateRestorer->setFramebufferBindingDirty();
812 m_stateRestorer->setRenderbufferBindingDirty(); 820 m_stateRestorer->setRenderbufferBindingDirty();
813 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_multisampleFBO); 821 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_multisampleFBO);
814 m_gl->BindRenderbuffer(GL_RENDERBUFFER, m_multisampleRenderbuffer); 822 m_gl->BindRenderbuffer(GL_RENDERBUFFER, m_multisampleRenderbuffer);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 return m_gl->CheckFramebufferStatus(GL_FRAMEBUFFER) == 871 return m_gl->CheckFramebufferStatus(GL_FRAMEBUFFER) ==
864 GL_FRAMEBUFFER_COMPLETE; 872 GL_FRAMEBUFFER_COMPLETE;
865 } 873 }
866 874
867 void DrawingBuffer::clearFramebuffers(GLbitfield clearMask) { 875 void DrawingBuffer::clearFramebuffers(GLbitfield clearMask) {
868 ScopedStateRestorer scopedStateRestorer(this); 876 ScopedStateRestorer scopedStateRestorer(this);
869 clearFramebuffersInternal(clearMask); 877 clearFramebuffersInternal(clearMask);
870 } 878 }
871 879
872 void DrawingBuffer::clearFramebuffersInternal(GLbitfield clearMask) { 880 void DrawingBuffer::clearFramebuffersInternal(GLbitfield clearMask) {
881 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
882 CHECK(m_stateRestorer);
873 m_stateRestorer->setFramebufferBindingDirty(); 883 m_stateRestorer->setFramebufferBindingDirty();
874 // We will clear the multisample FBO, but we also need to clear the 884 // We will clear the multisample FBO, but we also need to clear the
875 // non-multisampled buffer. 885 // non-multisampled buffer.
876 if (m_multisampleFBO) { 886 if (m_multisampleFBO) {
877 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_fbo); 887 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_fbo);
878 m_gl->Clear(GL_COLOR_BUFFER_BIT); 888 m_gl->Clear(GL_COLOR_BUFFER_BIT);
879 } 889 }
880 890
881 m_gl->BindFramebuffer(GL_FRAMEBUFFER, 891 m_gl->BindFramebuffer(GL_FRAMEBUFFER,
882 m_multisampleFBO ? m_multisampleFBO : m_fbo); 892 m_multisampleFBO ? m_multisampleFBO : m_fbo);
(...skipping 15 matching lines...) Expand all
898 908
899 return adjustedSize; 909 return adjustedSize;
900 } 910 }
901 911
902 bool DrawingBuffer::resize(const IntSize& newSize) { 912 bool DrawingBuffer::resize(const IntSize& newSize) {
903 ScopedStateRestorer scopedStateRestorer(this); 913 ScopedStateRestorer scopedStateRestorer(this);
904 return resizeFramebufferInternal(newSize); 914 return resizeFramebufferInternal(newSize);
905 } 915 }
906 916
907 bool DrawingBuffer::resizeFramebufferInternal(const IntSize& newSize) { 917 bool DrawingBuffer::resizeFramebufferInternal(const IntSize& newSize) {
918 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
919 CHECK(m_stateRestorer);
908 CHECK(!newSize.isEmpty()); 920 CHECK(!newSize.isEmpty());
909 IntSize adjustedSize = adjustSize(newSize, m_size, m_maxTextureSize); 921 IntSize adjustedSize = adjustSize(newSize, m_size, m_maxTextureSize);
910 if (adjustedSize.isEmpty()) 922 if (adjustedSize.isEmpty())
911 return false; 923 return false;
912 924
913 if (adjustedSize != m_size) { 925 if (adjustedSize != m_size) {
914 do { 926 do {
915 if (!resizeDefaultFramebuffer(adjustedSize)) { 927 if (!resizeDefaultFramebuffer(adjustedSize)) {
916 adjustedSize.scale(s_resourceAdjustedRatio); 928 adjustedSize.scale(s_resourceAdjustedRatio);
917 continue; 929 continue;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 965
954 void DrawingBuffer::resolveAndBindForReadAndDraw() { 966 void DrawingBuffer::resolveAndBindForReadAndDraw() {
955 { 967 {
956 ScopedStateRestorer scopedStateRestorer(this); 968 ScopedStateRestorer scopedStateRestorer(this);
957 resolveMultisampleFramebufferInternal(); 969 resolveMultisampleFramebufferInternal();
958 } 970 }
959 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_fbo); 971 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_fbo);
960 } 972 }
961 973
962 void DrawingBuffer::resolveMultisampleFramebufferInternal() { 974 void DrawingBuffer::resolveMultisampleFramebufferInternal() {
975 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
976 CHECK(m_stateRestorer);
963 m_stateRestorer->setFramebufferBindingDirty(); 977 m_stateRestorer->setFramebufferBindingDirty();
964 if (wantExplicitResolve() && !m_contentsChangeCommitted) { 978 if (wantExplicitResolve() && !m_contentsChangeCommitted) {
965 m_stateRestorer->setClearStateDirty(); 979 m_stateRestorer->setClearStateDirty();
966 m_gl->BindFramebuffer(GL_READ_FRAMEBUFFER_ANGLE, m_multisampleFBO); 980 m_gl->BindFramebuffer(GL_READ_FRAMEBUFFER_ANGLE, m_multisampleFBO);
967 m_gl->BindFramebuffer(GL_DRAW_FRAMEBUFFER_ANGLE, m_fbo); 981 m_gl->BindFramebuffer(GL_DRAW_FRAMEBUFFER_ANGLE, m_fbo);
968 m_gl->Disable(GL_SCISSOR_TEST); 982 m_gl->Disable(GL_SCISSOR_TEST);
969 983
970 int width = m_size.width(); 984 int width = m_size.width();
971 int height = m_size.height(); 985 int height = m_size.height();
972 // Use NEAREST, because there is no scale performed during the blit. 986 // Use NEAREST, because there is no scale performed during the blit.
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 1075
1062 pixels.transfer(contents); 1076 pixels.transfer(contents);
1063 return true; 1077 return true;
1064 } 1078 }
1065 1079
1066 void DrawingBuffer::readBackFramebuffer(unsigned char* pixels, 1080 void DrawingBuffer::readBackFramebuffer(unsigned char* pixels,
1067 int width, 1081 int width,
1068 int height, 1082 int height,
1069 ReadbackOrder readbackOrder, 1083 ReadbackOrder readbackOrder,
1070 WebGLImageConversion::AlphaOp op) { 1084 WebGLImageConversion::AlphaOp op) {
1085 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
1086 CHECK(m_stateRestorer);
1071 m_stateRestorer->setPixelPackAlignmentDirty(); 1087 m_stateRestorer->setPixelPackAlignmentDirty();
1072 m_gl->PixelStorei(GL_PACK_ALIGNMENT, 1); 1088 m_gl->PixelStorei(GL_PACK_ALIGNMENT, 1);
1073 m_gl->ReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels); 1089 m_gl->ReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
1074 1090
1075 size_t bufferSize = 4 * width * height; 1091 size_t bufferSize = 4 * width * height;
1076 1092
1077 if (readbackOrder == ReadbackSkia) { 1093 if (readbackOrder == ReadbackSkia) {
1078 #if (SK_R32_SHIFT == 16) && !SK_B32_SHIFT 1094 #if (SK_R32_SHIFT == 16) && !SK_B32_SHIFT
1079 // Swizzle red and blue channels to match SkBitmap's byte ordering. 1095 // Swizzle red and blue channels to match SkBitmap's byte ordering.
1080 // TODO(kbr): expose GL_BGRA as extension. 1096 // TODO(kbr): expose GL_BGRA as extension.
(...skipping 24 matching lines...) Expand all
1105 uint8_t* rowA = framebuffer + i * rowBytes; 1121 uint8_t* rowA = framebuffer + i * rowBytes;
1106 uint8_t* rowB = framebuffer + (height - i - 1) * rowBytes; 1122 uint8_t* rowB = framebuffer + (height - i - 1) * rowBytes;
1107 memcpy(scanline.data(), rowB, rowBytes); 1123 memcpy(scanline.data(), rowB, rowBytes);
1108 memcpy(rowB, rowA, rowBytes); 1124 memcpy(rowB, rowA, rowBytes);
1109 memcpy(rowA, scanline.data(), rowBytes); 1125 memcpy(rowA, scanline.data(), rowBytes);
1110 } 1126 }
1111 } 1127 }
1112 1128
1113 RefPtr<DrawingBuffer::ColorBuffer> DrawingBuffer::createColorBuffer( 1129 RefPtr<DrawingBuffer::ColorBuffer> DrawingBuffer::createColorBuffer(
1114 const IntSize& size) { 1130 const IntSize& size) {
1131 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
1132 CHECK(m_stateRestorer);
1115 m_stateRestorer->setFramebufferBindingDirty(); 1133 m_stateRestorer->setFramebufferBindingDirty();
1116 m_stateRestorer->setTextureBindingDirty(); 1134 m_stateRestorer->setTextureBindingDirty();
1117 1135
1118 // Select the Parameters for the texture object. Allocate the backing 1136 // Select the Parameters for the texture object. Allocate the backing
1119 // GpuMemoryBuffer and GLImage, if one is going to be used. 1137 // GpuMemoryBuffer and GLImage, if one is going to be used.
1120 ColorBufferParameters parameters; 1138 ColorBufferParameters parameters;
1121 GLuint imageId = 0; 1139 GLuint imageId = 0;
1122 if (shouldUseChromiumImage()) { 1140 if (shouldUseChromiumImage()) {
1123 parameters = gpuMemoryBufferColorBufferParameters(); 1141 parameters = gpuMemoryBufferColorBufferParameters();
1124 imageId = m_gl->CreateGpuMemoryBufferImageCHROMIUM( 1142 imageId = m_gl->CreateGpuMemoryBufferImageCHROMIUM(
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 m_gl->Clear(GL_COLOR_BUFFER_BIT); 1196 m_gl->Clear(GL_COLOR_BUFFER_BIT);
1179 m_gl->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 1197 m_gl->FramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
1180 parameters.target, 0, 0); 1198 parameters.target, 0, 0);
1181 m_gl->DeleteFramebuffers(1, &fbo); 1199 m_gl->DeleteFramebuffers(1, &fbo);
1182 } 1200 }
1183 1201
1184 return adoptRef(new ColorBuffer(this, parameters, size, textureId, imageId)); 1202 return adoptRef(new ColorBuffer(this, parameters, size, textureId, imageId));
1185 } 1203 }
1186 1204
1187 void DrawingBuffer::attachColorBufferToReadFramebuffer() { 1205 void DrawingBuffer::attachColorBufferToReadFramebuffer() {
1206 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
1207 CHECK(m_stateRestorer);
1188 m_stateRestorer->setFramebufferBindingDirty(); 1208 m_stateRestorer->setFramebufferBindingDirty();
1189 m_stateRestorer->setTextureBindingDirty(); 1209 m_stateRestorer->setTextureBindingDirty();
1190 1210
1191 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_fbo); 1211 m_gl->BindFramebuffer(GL_FRAMEBUFFER, m_fbo);
1192 1212
1193 GLenum target = m_backColorBuffer->parameters.target; 1213 GLenum target = m_backColorBuffer->parameters.target;
1194 GLenum id = m_backColorBuffer->textureId; 1214 GLenum id = m_backColorBuffer->textureId;
1195 1215
1196 m_gl->BindTexture(target, id); 1216 m_gl->BindTexture(target, id);
1197 1217
(...skipping 23 matching lines...) Expand all
1221 if (contextProvider() 1241 if (contextProvider()
1222 ->getCapabilities() 1242 ->getCapabilities()
1223 .disable_webgl_rgb_multisampling_usage) 1243 .disable_webgl_rgb_multisampling_usage)
1224 return GL_RGBA8_OES; 1244 return GL_RGBA8_OES;
1225 return GL_RGB8_OES; 1245 return GL_RGB8_OES;
1226 } 1246 }
1227 1247
1228 DrawingBuffer::ScopedStateRestorer::ScopedStateRestorer( 1248 DrawingBuffer::ScopedStateRestorer::ScopedStateRestorer(
1229 DrawingBuffer* drawingBuffer) 1249 DrawingBuffer* drawingBuffer)
1230 : m_drawingBuffer(drawingBuffer) { 1250 : m_drawingBuffer(drawingBuffer) {
1231 DCHECK(!m_drawingBuffer->m_stateRestorer); 1251 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
1252 CHECK(!m_drawingBuffer->m_stateRestorer);
1232 m_drawingBuffer->m_stateRestorer = this; 1253 m_drawingBuffer->m_stateRestorer = this;
1233 } 1254 }
1234 1255
1235 DrawingBuffer::ScopedStateRestorer::~ScopedStateRestorer() { 1256 DrawingBuffer::ScopedStateRestorer::~ScopedStateRestorer() {
1257 // TODO(ccameron): Make this a DCHECK after fixing crbug.com/658265
1258 CHECK_EQ(m_drawingBuffer->m_stateRestorer, this);
1236 m_drawingBuffer->m_stateRestorer = nullptr; 1259 m_drawingBuffer->m_stateRestorer = nullptr;
1237 Client* client = m_drawingBuffer->m_client; 1260 Client* client = m_drawingBuffer->m_client;
1238 if (!client) 1261 if (!client)
1239 return; 1262 return;
1240 1263
1241 if (m_clearStateDirty) { 1264 if (m_clearStateDirty) {
1242 client->DrawingBufferClientRestoreScissorTest(); 1265 client->DrawingBufferClientRestoreScissorTest();
1243 client->DrawingBufferClientRestoreMaskAndClearValues(); 1266 client->DrawingBufferClientRestoreMaskAndClearValues();
1244 } 1267 }
1245 if (m_pixelPackAlignmentDirty) 1268 if (m_pixelPackAlignmentDirty)
1246 client->DrawingBufferClientRestorePixelPackAlignment(); 1269 client->DrawingBufferClientRestorePixelPackAlignment();
1247 if (m_textureBindingDirty) 1270 if (m_textureBindingDirty)
1248 client->DrawingBufferClientRestoreTexture2DBinding(); 1271 client->DrawingBufferClientRestoreTexture2DBinding();
1249 if (m_renderbufferBindingDirty) 1272 if (m_renderbufferBindingDirty)
1250 client->DrawingBufferClientRestoreRenderbufferBinding(); 1273 client->DrawingBufferClientRestoreRenderbufferBinding();
1251 if (m_framebufferBindingDirty) 1274 if (m_framebufferBindingDirty)
1252 client->DrawingBufferClientRestoreFramebufferBinding(); 1275 client->DrawingBufferClientRestoreFramebufferBinding();
1253 if (m_pixelUnpackBufferBindingDirty) 1276 if (m_pixelUnpackBufferBindingDirty)
1254 client->DrawingBufferClientRestorePixelUnpackBufferBinding(); 1277 client->DrawingBufferClientRestorePixelUnpackBufferBinding();
1255 } 1278 }
1256 1279
1257 bool DrawingBuffer::shouldUseChromiumImage() { 1280 bool DrawingBuffer::shouldUseChromiumImage() {
1258 return RuntimeEnabledFeatures::webGLImageChromiumEnabled() && 1281 return RuntimeEnabledFeatures::webGLImageChromiumEnabled() &&
1259 m_chromiumImageUsage == AllowChromiumImage; 1282 m_chromiumImageUsage == AllowChromiumImage;
1260 } 1283 }
1261 1284
1262 } // namespace blink 1285 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698