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

Side by Side Diff: Source/core/html/canvas/WebGLRenderingContextBase.cpp

Issue 763493003: Track scissored damage area for WebGL Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 Apple 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 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 if (m_framebufferBinding || isContextLost()) 795 if (m_framebufferBinding || isContextLost())
796 return; 796 return;
797 797
798 drawingBuffer()->markContentsChanged(); 798 drawingBuffer()->markContentsChanged();
799 799
800 m_layerCleared = false; 800 m_layerCleared = false;
801 RenderBox* renderBox = canvas()->renderBox(); 801 RenderBox* renderBox = canvas()->renderBox();
802 if (renderBox && renderBox->hasAcceleratedCompositing()) { 802 if (renderBox && renderBox->hasAcceleratedCompositing()) {
803 m_markedCanvasDirty = true; 803 m_markedCanvasDirty = true;
804 canvas()->clearCopiedImage(); 804 canvas()->clearCopiedImage();
805 renderBox->contentChanged(changeType); 805 IntRect rect = IntRect(IntPoint(0, 0), clampedCanvasSize());
806 if (!m_flippedScissorBox.isEmpty())
807 rect.intersect(m_flippedScissorBox);
808 renderBox->contentChanged(changeType, rect);
806 } else { 809 } else {
807 if (!m_markedCanvasDirty) { 810 if (!m_markedCanvasDirty) {
808 m_markedCanvasDirty = true; 811 m_markedCanvasDirty = true;
809 canvas()->didDraw(FloatRect(FloatPoint(0, 0), clampedCanvasSize())); 812 canvas()->didDraw(FloatRect(FloatPoint(0, 0), clampedCanvasSize()));
810 } 813 }
811 } 814 }
812 } 815 }
813 816
814 bool WebGLRenderingContextBase::clearIfComposited(GLbitfield mask) 817 bool WebGLRenderingContextBase::clearIfComposited(GLbitfield mask)
815 { 818 {
(...skipping 2416 matching lines...) Expand 10 before | Expand all | Expand 10 after
3232 return; 3235 return;
3233 webContext()->sampleCoverage(value, invert); 3236 webContext()->sampleCoverage(value, invert);
3234 } 3237 }
3235 3238
3236 void WebGLRenderingContextBase::scissor(GLint x, GLint y, GLsizei width, GLsizei height) 3239 void WebGLRenderingContextBase::scissor(GLint x, GLint y, GLsizei width, GLsizei height)
3237 { 3240 {
3238 if (isContextLost()) 3241 if (isContextLost())
3239 return; 3242 return;
3240 if (!validateSize("scissor", width, height)) 3243 if (!validateSize("scissor", width, height))
3241 return; 3244 return;
3245
3246 m_flippedScissorBox = IntRect(x, canvas()->height() - height, width, height - y);
3242 webContext()->scissor(x, y, width, height); 3247 webContext()->scissor(x, y, width, height);
3243 } 3248 }
3244 3249
3245 void WebGLRenderingContextBase::shaderSource(WebGLShader* shader, const String& string) 3250 void WebGLRenderingContextBase::shaderSource(WebGLShader* shader, const String& string)
3246 { 3251 {
3247 if (isContextLost() || !validateWebGLObject("shaderSource", shader)) 3252 if (isContextLost() || !validateWebGLObject("shaderSource", shader))
3248 return; 3253 return;
3249 String stringWithoutComments = StripComments(string).result(); 3254 String stringWithoutComments = StripComments(string).result();
3250 if (!validateString("shaderSource", stringWithoutComments)) 3255 if (!validateString("shaderSource", stringWithoutComments))
3251 return; 3256 return;
(...skipping 2619 matching lines...) Expand 10 before | Expand all | Expand 10 after
5871 return m_sharedWebGraphicsContext3D ? m_sharedWebGraphicsContext3D->drawingB uffer() : 0; 5876 return m_sharedWebGraphicsContext3D ? m_sharedWebGraphicsContext3D->drawingB uffer() : 0;
5872 } 5877 }
5873 #else 5878 #else
5874 DrawingBuffer* WebGLRenderingContextBase::drawingBuffer() const 5879 DrawingBuffer* WebGLRenderingContextBase::drawingBuffer() const
5875 { 5880 {
5876 return m_drawingBuffer.get(); 5881 return m_drawingBuffer.get();
5877 } 5882 }
5878 #endif 5883 #endif
5879 5884
5880 } // namespace blink 5885 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/html/canvas/WebGLRenderingContextBase.h ('k') | Source/core/rendering/RenderBoxModelObject.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698