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

Side by Side Diff: third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp

Issue 1412613004: Set attachment for bound framebuffer in FramebufferTextureLayer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "modules/webgl/WebGL2RenderingContextBase.h" 6 #include "modules/webgl/WebGL2RenderingContextBase.h"
7 7
8 #include "bindings/modules/v8/WebGLAny.h" 8 #include "bindings/modules/v8/WebGLAny.h"
9 #include "core/html/HTMLCanvasElement.h" 9 #include "core/html/HTMLCanvasElement.h"
10 #include "core/html/HTMLImageElement.h" 10 #include "core/html/HTMLImageElement.h"
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 } 236 }
237 237
238 void WebGL2RenderingContextBase::blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfi eld mask, GLenum filter) 238 void WebGL2RenderingContextBase::blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfi eld mask, GLenum filter)
239 { 239 {
240 if (isContextLost()) 240 if (isContextLost())
241 return; 241 return;
242 242
243 webContext()->blitFramebufferCHROMIUM(srcX0, srcY0, srcX1, srcY1, dstX0, dst Y0, dstX1, dstY1, mask, filter); 243 webContext()->blitFramebufferCHROMIUM(srcX0, srcY0, srcX1, srcY1, dstX0, dst Y0, dstX1, dstY1, mask, filter);
244 } 244 }
245 245
246 void WebGL2RenderingContextBase::framebufferTextureLayer(GLenum target, GLenum a ttachment, const WebGLTexture* texture, GLint level, GLint layer) 246 void WebGL2RenderingContextBase::framebufferTextureLayer(ScriptState* scriptStat e, GLenum target, GLenum attachment, WebGLTexture* texture, GLint level, GLint l ayer)
247 { 247 {
248 if (isContextLost()) 248 if (isContextLost())
249 return; 249 return;
250
251 if (texture && !texture->validate(contextGroup(), this)) { 250 if (texture && !texture->validate(contextGroup(), this)) {
252 synthesizeGLError(GL_INVALID_VALUE, "framebufferTextureLayer", "no textu re or texture not from this context"); 251 synthesizeGLError(GL_INVALID_VALUE, "framebufferTextureLayer", "no textu re or texture not from this context");
253 return; 252 return;
254 } 253 }
254 GLenum textarget = texture->getTarget();
255 if (!validateTexFuncLevel("framebufferTextureLayer", textarget, level))
256 return;
255 257
258
259 WebGLFramebuffer* framebufferBinding = getFramebufferBinding(target);
260 if (!framebufferBinding || !framebufferBinding->object()) {
261 synthesizeGLError(GL_INVALID_OPERATION, "framebufferTextureLayer", "no f ramebuffer bound");
262 return;
263 }
256 webContext()->framebufferTextureLayer(target, attachment, objectOrZero(textu re), level, layer); 264 webContext()->framebufferTextureLayer(target, attachment, objectOrZero(textu re), level, layer);
265 framebufferBinding->setAttachmentForBoundFramebuffer(target, attachment, tex target, texture, level);
Zhenyao Mo 2015/10/26 21:50:33 You miss validation of target, attachment, texture
qiankun 2015/10/27 14:26:31 More validations were added. Incorporated layer pa
266 applyStencilTest();
267 preserveObjectWrapper(scriptState, framebufferBinding, "texture3d", attachme nt, texture);
Ken Russell (switch to Gerrit) 2015/10/26 21:23:09 I made a mistake in the original patch adding thes
qiankun 2015/10/27 14:26:31 Done.
257 } 268 }
258 269
259 ScriptValue WebGL2RenderingContextBase::getInternalformatParameter(ScriptState* scriptState, GLenum target, GLenum internalformat, GLenum pname) 270 ScriptValue WebGL2RenderingContextBase::getInternalformatParameter(ScriptState* scriptState, GLenum target, GLenum internalformat, GLenum pname)
260 { 271 {
261 if (isContextLost()) 272 if (isContextLost())
262 return ScriptValue::createNull(scriptState); 273 return ScriptValue::createNull(scriptState);
263 274
264 if (target != GL_RENDERBUFFER) { 275 if (target != GL_RENDERBUFFER) {
265 synthesizeGLError(GL_INVALID_ENUM, "getInternalformatParameter", "invali d target"); 276 synthesizeGLError(GL_INVALID_ENUM, "getInternalformatParameter", "invali d target");
266 return ScriptValue::createNull(scriptState); 277 return ScriptValue::createNull(scriptState);
(...skipping 2695 matching lines...) Expand 10 before | Expand all | Expand 10 after
2962 GLenum WebGL2RenderingContextBase::boundFramebufferColorFormat() 2973 GLenum WebGL2RenderingContextBase::boundFramebufferColorFormat()
2963 { 2974 {
2964 if (m_readFramebufferBinding && m_readFramebufferBinding->object()) 2975 if (m_readFramebufferBinding && m_readFramebufferBinding->object())
2965 return m_readFramebufferBinding->colorBufferFormat(); 2976 return m_readFramebufferBinding->colorBufferFormat();
2966 if (m_requestedAttributes.alpha()) 2977 if (m_requestedAttributes.alpha())
2967 return GL_RGBA; 2978 return GL_RGBA;
2968 return GL_RGB; 2979 return GL_RGB;
2969 } 2980 }
2970 2981
2971 } // namespace blink 2982 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698