| 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/dom/DOMException.h" | 8 #include "core/dom/DOMException.h" |
| 9 #include "core/frame/ImageBitmap.h" | 9 #include "core/frame/ImageBitmap.h" |
| 10 #include "core/html/HTMLCanvasElement.h" | 10 #include "core/html/HTMLCanvasElement.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 visitor->trace(m_destinationArrayBufferView); | 220 visitor->trace(m_destinationArrayBufferView); |
| 221 } | 221 } |
| 222 | 222 |
| 223 WebGL2RenderingContextBase::WebGL2RenderingContextBase( | 223 WebGL2RenderingContextBase::WebGL2RenderingContextBase( |
| 224 HTMLCanvasElement* passedCanvas, | 224 HTMLCanvasElement* passedCanvas, |
| 225 std::unique_ptr<WebGraphicsContext3DProvider> contextProvider, | 225 std::unique_ptr<WebGraphicsContext3DProvider> contextProvider, |
| 226 const CanvasContextCreationAttributes& requestedAttributes) | 226 const CanvasContextCreationAttributes& requestedAttributes) |
| 227 : WebGLRenderingContextBase(passedCanvas, | 227 : WebGLRenderingContextBase(passedCanvas, |
| 228 std::move(contextProvider), | 228 std::move(contextProvider), |
| 229 requestedAttributes, | 229 requestedAttributes, |
| 230 2) { | 230 2), |
| 231 m_readFramebufferBinding(this, nullptr), |
| 232 m_transformFeedbackBinding(this, nullptr), |
| 233 m_boundCopyReadBuffer(this, nullptr), |
| 234 m_boundCopyWriteBuffer(this, nullptr), |
| 235 m_boundPixelPackBuffer(this, nullptr), |
| 236 m_boundPixelUnpackBuffer(this, nullptr), |
| 237 m_boundTransformFeedbackBuffer(this, nullptr), |
| 238 m_boundUniformBuffer(this, nullptr), |
| 239 m_currentBooleanOcclusionQuery(this, nullptr), |
| 240 m_currentTransformFeedbackPrimitivesWrittenQuery(this, nullptr) { |
| 231 m_supportedInternalFormatsStorage.insert( | 241 m_supportedInternalFormatsStorage.insert( |
| 232 kSupportedInternalFormatsStorage, | 242 kSupportedInternalFormatsStorage, |
| 233 kSupportedInternalFormatsStorage + | 243 kSupportedInternalFormatsStorage + |
| 234 WTF_ARRAY_LENGTH(kSupportedInternalFormatsStorage)); | 244 WTF_ARRAY_LENGTH(kSupportedInternalFormatsStorage)); |
| 235 } | 245 } |
| 236 | 246 |
| 237 WebGL2RenderingContextBase::~WebGL2RenderingContextBase() { | 247 WebGL2RenderingContextBase::~WebGL2RenderingContextBase() { |
| 238 m_readFramebufferBinding = nullptr; | 248 m_readFramebufferBinding = nullptr; |
| 239 | 249 |
| 240 m_boundCopyReadBuffer = nullptr; | 250 m_boundCopyReadBuffer = nullptr; |
| (...skipping 2601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2842 "attempted to bind a deleted sampler"); | 2852 "attempted to bind a deleted sampler"); |
| 2843 return; | 2853 return; |
| 2844 } | 2854 } |
| 2845 | 2855 |
| 2846 if (unit >= m_samplerUnits.size()) { | 2856 if (unit >= m_samplerUnits.size()) { |
| 2847 synthesizeGLError(GL_INVALID_VALUE, "bindSampler", | 2857 synthesizeGLError(GL_INVALID_VALUE, "bindSampler", |
| 2848 "texture unit out of range"); | 2858 "texture unit out of range"); |
| 2849 return; | 2859 return; |
| 2850 } | 2860 } |
| 2851 | 2861 |
| 2852 m_samplerUnits[unit] = sampler; | 2862 m_samplerUnits[unit] = TraceWrapperMember<WebGLSampler>(this, sampler); |
| 2853 | 2863 |
| 2854 contextGL()->BindSampler(unit, objectOrZero(sampler)); | 2864 contextGL()->BindSampler(unit, objectOrZero(sampler)); |
| 2855 } | 2865 } |
| 2856 | 2866 |
| 2857 void WebGL2RenderingContextBase::samplerParameter(WebGLSampler* sampler, | 2867 void WebGL2RenderingContextBase::samplerParameter(WebGLSampler* sampler, |
| 2858 GLenum pname, | 2868 GLenum pname, |
| 2859 GLfloat paramf, | 2869 GLfloat paramf, |
| 2860 GLint parami, | 2870 GLint parami, |
| 2861 bool isFloat) { | 2871 bool isFloat) { |
| 2862 if (isContextLost() || !validateWebGLObject("samplerParameter", sampler)) | 2872 if (isContextLost() || !validateWebGLObject("samplerParameter", sampler)) |
| (...skipping 1172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4035 if (buffer && | 4045 if (buffer && |
| 4036 !validateBufferTargetCompatibility(functionName, target, buffer)) | 4046 !validateBufferTargetCompatibility(functionName, target, buffer)) |
| 4037 return false; | 4047 return false; |
| 4038 | 4048 |
| 4039 switch (target) { | 4049 switch (target) { |
| 4040 case GL_TRANSFORM_FEEDBACK_BUFFER: | 4050 case GL_TRANSFORM_FEEDBACK_BUFFER: |
| 4041 if (index >= m_boundIndexedTransformFeedbackBuffers.size()) { | 4051 if (index >= m_boundIndexedTransformFeedbackBuffers.size()) { |
| 4042 synthesizeGLError(GL_INVALID_VALUE, functionName, "index out of range"); | 4052 synthesizeGLError(GL_INVALID_VALUE, functionName, "index out of range"); |
| 4043 return false; | 4053 return false; |
| 4044 } | 4054 } |
| 4045 m_boundIndexedTransformFeedbackBuffers[index] = buffer; | 4055 m_boundIndexedTransformFeedbackBuffers[index] = |
| 4056 TraceWrapperMember<WebGLBuffer>(this, buffer); |
| 4046 m_boundTransformFeedbackBuffer = buffer; | 4057 m_boundTransformFeedbackBuffer = buffer; |
| 4047 break; | 4058 break; |
| 4048 case GL_UNIFORM_BUFFER: | 4059 case GL_UNIFORM_BUFFER: |
| 4049 if (index >= m_boundIndexedUniformBuffers.size()) { | 4060 if (index >= m_boundIndexedUniformBuffers.size()) { |
| 4050 synthesizeGLError(GL_INVALID_VALUE, functionName, "index out of range"); | 4061 synthesizeGLError(GL_INVALID_VALUE, functionName, "index out of range"); |
| 4051 return false; | 4062 return false; |
| 4052 } | 4063 } |
| 4053 m_boundIndexedUniformBuffers[index] = buffer; | 4064 m_boundIndexedUniformBuffers[index] = |
| 4065 TraceWrapperMember<WebGLBuffer>(this, buffer); |
| 4054 m_boundUniformBuffer = buffer; | 4066 m_boundUniformBuffer = buffer; |
| 4055 | 4067 |
| 4056 // Keep track of what the maximum bound uniform buffer index is | 4068 // Keep track of what the maximum bound uniform buffer index is |
| 4057 if (buffer) { | 4069 if (buffer) { |
| 4058 if (index > m_maxBoundUniformBufferIndex) | 4070 if (index > m_maxBoundUniformBufferIndex) |
| 4059 m_maxBoundUniformBufferIndex = index; | 4071 m_maxBoundUniformBufferIndex = index; |
| 4060 } else if (m_maxBoundUniformBufferIndex > 0 && | 4072 } else if (m_maxBoundUniformBufferIndex > 0 && |
| 4061 index == m_maxBoundUniformBufferIndex) { | 4073 index == m_maxBoundUniformBufferIndex) { |
| 4062 size_t i = m_maxBoundUniformBufferIndex - 1; | 4074 size_t i = m_maxBoundUniformBufferIndex - 1; |
| 4063 for (; i > 0; --i) { | 4075 for (; i > 0; --i) { |
| (...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4705 params.skipPixels = m_unpackSkipPixels; | 4717 params.skipPixels = m_unpackSkipPixels; |
| 4706 params.skipRows = m_unpackSkipRows; | 4718 params.skipRows = m_unpackSkipRows; |
| 4707 if (dimension == Tex3D) { | 4719 if (dimension == Tex3D) { |
| 4708 params.imageHeight = m_unpackImageHeight; | 4720 params.imageHeight = m_unpackImageHeight; |
| 4709 params.skipImages = m_unpackSkipImages; | 4721 params.skipImages = m_unpackSkipImages; |
| 4710 } | 4722 } |
| 4711 return params; | 4723 return params; |
| 4712 } | 4724 } |
| 4713 | 4725 |
| 4714 } // namespace blink | 4726 } // namespace blink |
| OLD | NEW |