OLD | NEW |
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 "modules/webgl/WebGL2RenderingContextBase.h" | 5 #include "modules/webgl/WebGL2RenderingContextBase.h" |
6 | 6 |
7 #include "bindings/modules/v8/WebGLAny.h" | 7 #include "bindings/modules/v8/WebGLAny.h" |
8 #include "core/frame/ImageBitmap.h" | 8 #include "core/frame/ImageBitmap.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 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 if (!validateTexFuncLevel("framebufferTextureLayer", textarget, level)) | 456 if (!validateTexFuncLevel("framebufferTextureLayer", textarget, level)) |
457 return; | 457 return; |
458 } | 458 } |
459 | 459 |
460 WebGLFramebuffer* framebufferBinding = getFramebufferBinding(target); | 460 WebGLFramebuffer* framebufferBinding = getFramebufferBinding(target); |
461 if (!framebufferBinding || !framebufferBinding->object()) { | 461 if (!framebufferBinding || !framebufferBinding->object()) { |
462 synthesizeGLError(GL_INVALID_OPERATION, "framebufferTextureLayer", | 462 synthesizeGLError(GL_INVALID_OPERATION, "framebufferTextureLayer", |
463 "no framebuffer bound"); | 463 "no framebuffer bound"); |
464 return; | 464 return; |
465 } | 465 } |
466 if (attachment == GL_DEPTH_STENCIL_ATTACHMENT) { | 466 framebufferBinding->setAttachmentForBoundFramebuffer( |
467 contextGL()->FramebufferTextureLayer(target, GL_DEPTH_ATTACHMENT, | 467 target, attachment, textarget, texture, level, layer); |
468 objectOrZero(texture), level, layer); | |
469 contextGL()->FramebufferTextureLayer(target, GL_STENCIL_ATTACHMENT, | |
470 objectOrZero(texture), level, layer); | |
471 } else { | |
472 contextGL()->FramebufferTextureLayer(target, attachment, | |
473 objectOrZero(texture), level, layer); | |
474 } | |
475 if (attachment == GL_DEPTH_STENCIL_ATTACHMENT) { | |
476 // On ES3, DEPTH_STENCIL_ATTACHMENT is like an alias for DEPTH_ATTACHMENT + | |
477 // STENCIL_ATTACHMENT. We divide it here so in WebGLFramebuffer, we don't | |
478 // have to handle DEPTH_STENCIL_ATTACHMENT in WebGL 2. | |
479 framebufferBinding->setAttachmentForBoundFramebuffer( | |
480 target, GL_DEPTH_ATTACHMENT, textarget, texture, level, layer); | |
481 framebufferBinding->setAttachmentForBoundFramebuffer( | |
482 target, GL_STENCIL_ATTACHMENT, textarget, texture, level, layer); | |
483 } else { | |
484 framebufferBinding->setAttachmentForBoundFramebuffer( | |
485 target, attachment, textarget, texture, level, layer); | |
486 } | |
487 applyStencilTest(); | 468 applyStencilTest(); |
488 } | 469 } |
489 | 470 |
490 ScriptValue WebGL2RenderingContextBase::getInternalformatParameter( | 471 ScriptValue WebGL2RenderingContextBase::getInternalformatParameter( |
491 ScriptState* scriptState, | 472 ScriptState* scriptState, |
492 GLenum target, | 473 GLenum target, |
493 GLenum internalformat, | 474 GLenum internalformat, |
494 GLenum pname) { | 475 GLenum pname) { |
495 if (isContextLost()) | 476 if (isContextLost()) |
496 return ScriptValue::createNull(scriptState); | 477 return ScriptValue::createNull(scriptState); |
(...skipping 3997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4494 params.skipPixels = m_unpackSkipPixels; | 4475 params.skipPixels = m_unpackSkipPixels; |
4495 params.skipRows = m_unpackSkipRows; | 4476 params.skipRows = m_unpackSkipRows; |
4496 if (dimension == Tex3D) { | 4477 if (dimension == Tex3D) { |
4497 params.imageHeight = m_unpackImageHeight; | 4478 params.imageHeight = m_unpackImageHeight; |
4498 params.skipImages = m_unpackSkipImages; | 4479 params.skipImages = m_unpackSkipImages; |
4499 } | 4480 } |
4500 return params; | 4481 return params; |
4501 } | 4482 } |
4502 | 4483 |
4503 } // namespace blink | 4484 } // namespace blink |
OLD | NEW |