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

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

Issue 2437233002: Implement EXT_disjoint_timer_query_webgl2 (Closed)
Patch Set: fix logic again 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
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 "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 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 2), 230 2),
231 m_readFramebufferBinding(this, nullptr), 231 m_readFramebufferBinding(this, nullptr),
232 m_transformFeedbackBinding(this, nullptr), 232 m_transformFeedbackBinding(this, nullptr),
233 m_boundCopyReadBuffer(this, nullptr), 233 m_boundCopyReadBuffer(this, nullptr),
234 m_boundCopyWriteBuffer(this, nullptr), 234 m_boundCopyWriteBuffer(this, nullptr),
235 m_boundPixelPackBuffer(this, nullptr), 235 m_boundPixelPackBuffer(this, nullptr),
236 m_boundPixelUnpackBuffer(this, nullptr), 236 m_boundPixelUnpackBuffer(this, nullptr),
237 m_boundTransformFeedbackBuffer(this, nullptr), 237 m_boundTransformFeedbackBuffer(this, nullptr),
238 m_boundUniformBuffer(this, nullptr), 238 m_boundUniformBuffer(this, nullptr),
239 m_currentBooleanOcclusionQuery(this, nullptr), 239 m_currentBooleanOcclusionQuery(this, nullptr),
240 m_currentTransformFeedbackPrimitivesWrittenQuery(this, nullptr) { 240 m_currentTransformFeedbackPrimitivesWrittenQuery(this, nullptr),
241 m_currentElapsedQuery(this, nullptr) {
241 m_supportedInternalFormatsStorage.insert( 242 m_supportedInternalFormatsStorage.insert(
242 kSupportedInternalFormatsStorage, 243 kSupportedInternalFormatsStorage,
243 kSupportedInternalFormatsStorage + 244 kSupportedInternalFormatsStorage +
244 WTF_ARRAY_LENGTH(kSupportedInternalFormatsStorage)); 245 WTF_ARRAY_LENGTH(kSupportedInternalFormatsStorage));
245 } 246 }
246 247
247 WebGL2RenderingContextBase::~WebGL2RenderingContextBase() { 248 WebGL2RenderingContextBase::~WebGL2RenderingContextBase() {
248 m_readFramebufferBinding = nullptr; 249 m_readFramebufferBinding = nullptr;
249 250
250 m_boundCopyReadBuffer = nullptr; 251 m_boundCopyReadBuffer = nullptr;
251 m_boundCopyWriteBuffer = nullptr; 252 m_boundCopyWriteBuffer = nullptr;
252 m_boundPixelPackBuffer = nullptr; 253 m_boundPixelPackBuffer = nullptr;
253 m_boundPixelUnpackBuffer = nullptr; 254 m_boundPixelUnpackBuffer = nullptr;
254 m_boundTransformFeedbackBuffer = nullptr; 255 m_boundTransformFeedbackBuffer = nullptr;
255 m_boundUniformBuffer = nullptr; 256 m_boundUniformBuffer = nullptr;
256 257
257 m_currentBooleanOcclusionQuery = nullptr; 258 m_currentBooleanOcclusionQuery = nullptr;
258 m_currentTransformFeedbackPrimitivesWrittenQuery = nullptr; 259 m_currentTransformFeedbackPrimitivesWrittenQuery = nullptr;
260 m_currentElapsedQuery = nullptr;
259 } 261 }
260 262
261 void WebGL2RenderingContextBase::destroyContext() { 263 void WebGL2RenderingContextBase::destroyContext() {
262 for (auto& callback : m_getBufferSubDataAsyncCallbacks) { 264 for (auto& callback : m_getBufferSubDataAsyncCallbacks) {
263 callback->destroy(); 265 callback->destroy();
264 } 266 }
265 m_getBufferSubDataAsyncCallbacks.clear(); 267 m_getBufferSubDataAsyncCallbacks.clear();
266 268
267 WebGLRenderingContextBase::destroyContext(); 269 WebGLRenderingContextBase::destroyContext();
268 } 270 }
269 271
270 void WebGL2RenderingContextBase::initializeNewContext() { 272 void WebGL2RenderingContextBase::initializeNewContext() {
271 ASSERT(!isContextLost()); 273 ASSERT(!isContextLost());
272 ASSERT(drawingBuffer()); 274 ASSERT(drawingBuffer());
273 275
274 m_readFramebufferBinding = nullptr; 276 m_readFramebufferBinding = nullptr;
275 277
276 m_boundCopyReadBuffer = nullptr; 278 m_boundCopyReadBuffer = nullptr;
277 m_boundCopyWriteBuffer = nullptr; 279 m_boundCopyWriteBuffer = nullptr;
278 m_boundPixelPackBuffer = nullptr; 280 m_boundPixelPackBuffer = nullptr;
279 m_boundPixelUnpackBuffer = nullptr; 281 m_boundPixelUnpackBuffer = nullptr;
280 m_boundTransformFeedbackBuffer = nullptr; 282 m_boundTransformFeedbackBuffer = nullptr;
281 m_boundUniformBuffer = nullptr; 283 m_boundUniformBuffer = nullptr;
282 284
283 m_currentBooleanOcclusionQuery = nullptr; 285 m_currentBooleanOcclusionQuery = nullptr;
284 m_currentTransformFeedbackPrimitivesWrittenQuery = nullptr; 286 m_currentTransformFeedbackPrimitivesWrittenQuery = nullptr;
287 m_currentElapsedQuery = nullptr;
285 288
286 GLint numCombinedTextureImageUnits = 0; 289 GLint numCombinedTextureImageUnits = 0;
287 contextGL()->GetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, 290 contextGL()->GetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
288 &numCombinedTextureImageUnits); 291 &numCombinedTextureImageUnits);
289 m_samplerUnits.clear(); 292 m_samplerUnits.clear();
290 m_samplerUnits.resize(numCombinedTextureImageUnits); 293 m_samplerUnits.resize(numCombinedTextureImageUnits);
291 294
292 m_maxTransformFeedbackSeparateAttribs = 0; 295 m_maxTransformFeedbackSeparateAttribs = 0;
293 contextGL()->GetIntegerv(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, 296 contextGL()->GetIntegerv(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
294 &m_maxTransformFeedbackSeparateAttribs); 297 &m_maxTransformFeedbackSeparateAttribs);
(...skipping 2339 matching lines...) Expand 10 before | Expand all | Expand 10 after
2634 if (m_currentBooleanOcclusionQuery == query) { 2637 if (m_currentBooleanOcclusionQuery == query) {
2635 contextGL()->EndQueryEXT(m_currentBooleanOcclusionQuery->getTarget()); 2638 contextGL()->EndQueryEXT(m_currentBooleanOcclusionQuery->getTarget());
2636 m_currentBooleanOcclusionQuery = nullptr; 2639 m_currentBooleanOcclusionQuery = nullptr;
2637 } 2640 }
2638 2641
2639 if (m_currentTransformFeedbackPrimitivesWrittenQuery == query) { 2642 if (m_currentTransformFeedbackPrimitivesWrittenQuery == query) {
2640 contextGL()->EndQueryEXT(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN); 2643 contextGL()->EndQueryEXT(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);
2641 m_currentTransformFeedbackPrimitivesWrittenQuery = nullptr; 2644 m_currentTransformFeedbackPrimitivesWrittenQuery = nullptr;
2642 } 2645 }
2643 2646
2647 if (m_currentElapsedQuery == query) {
2648 contextGL()->EndQueryEXT(m_currentElapsedQuery->getTarget());
2649 m_currentElapsedQuery = nullptr;
2650 }
2651
2644 deleteObject(query); 2652 deleteObject(query);
2645 } 2653 }
2646 2654
2647 GLboolean WebGL2RenderingContextBase::isQuery(WebGLQuery* query) { 2655 GLboolean WebGL2RenderingContextBase::isQuery(WebGLQuery* query) {
2648 if (isContextLost() || !query) 2656 if (isContextLost() || !query)
2649 return 0; 2657 return 0;
2650 2658
2651 return contextGL()->IsQueryEXT(query->object()); 2659 return contextGL()->IsQueryEXT(query->object());
2652 } 2660 }
2653 2661
(...skipping 30 matching lines...) Expand all
2684 m_currentBooleanOcclusionQuery = query; 2692 m_currentBooleanOcclusionQuery = query;
2685 } break; 2693 } break;
2686 case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: { 2694 case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: {
2687 if (m_currentTransformFeedbackPrimitivesWrittenQuery) { 2695 if (m_currentTransformFeedbackPrimitivesWrittenQuery) {
2688 synthesizeGLError(GL_INVALID_OPERATION, "beginQuery", 2696 synthesizeGLError(GL_INVALID_OPERATION, "beginQuery",
2689 "a query is already active for target"); 2697 "a query is already active for target");
2690 return; 2698 return;
2691 } 2699 }
2692 m_currentTransformFeedbackPrimitivesWrittenQuery = query; 2700 m_currentTransformFeedbackPrimitivesWrittenQuery = query;
2693 } break; 2701 } break;
2702 case GL_TIME_ELAPSED_EXT: {
2703 if (!extensionEnabled(EXTDisjointTimerQueryWebGL2Name)) {
2704 synthesizeGLError(GL_INVALID_ENUM, "beginQuery", "invalid target");
2705 return;
2706 }
2707 if (m_currentElapsedQuery) {
2708 synthesizeGLError(GL_INVALID_OPERATION, "beginQuery",
2709 "a query is already active for target");
2710 return;
2711 }
2712 m_currentElapsedQuery = query;
2713 } break;
2694 default: 2714 default:
2695 synthesizeGLError(GL_INVALID_ENUM, "beginQuery", "invalid target"); 2715 synthesizeGLError(GL_INVALID_ENUM, "beginQuery", "invalid target");
2696 return; 2716 return;
2697 } 2717 }
2698 2718
2699 if (!query->getTarget()) 2719 if (!query->getTarget())
2700 query->setTarget(target); 2720 query->setTarget(target);
2701 2721
2702 contextGL()->BeginQueryEXT(target, query->object()); 2722 contextGL()->BeginQueryEXT(target, query->object());
2703 } 2723 }
(...skipping 18 matching lines...) Expand all
2722 case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: { 2742 case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: {
2723 if (m_currentTransformFeedbackPrimitivesWrittenQuery) { 2743 if (m_currentTransformFeedbackPrimitivesWrittenQuery) {
2724 m_currentTransformFeedbackPrimitivesWrittenQuery->resetCachedResult(); 2744 m_currentTransformFeedbackPrimitivesWrittenQuery->resetCachedResult();
2725 m_currentTransformFeedbackPrimitivesWrittenQuery = nullptr; 2745 m_currentTransformFeedbackPrimitivesWrittenQuery = nullptr;
2726 } else { 2746 } else {
2727 synthesizeGLError(GL_INVALID_OPERATION, "endQuery", 2747 synthesizeGLError(GL_INVALID_OPERATION, "endQuery",
2728 "target query is not active"); 2748 "target query is not active");
2729 return; 2749 return;
2730 } 2750 }
2731 } break; 2751 } break;
2752 case GL_TIME_ELAPSED_EXT: {
2753 if (!extensionEnabled(EXTDisjointTimerQueryWebGL2Name)) {
2754 synthesizeGLError(GL_INVALID_ENUM, "endQuery", "invalid target");
2755 return;
2756 }
2757 if (m_currentElapsedQuery) {
2758 m_currentElapsedQuery->resetCachedResult();
2759 m_currentElapsedQuery = nullptr;
2760 } else {
2761 synthesizeGLError(GL_INVALID_OPERATION, "endQuery",
2762 "target query is not active");
2763 return;
2764 }
2765 } break;
2732 default: 2766 default:
2733 synthesizeGLError(GL_INVALID_ENUM, "endQuery", "invalid target"); 2767 synthesizeGLError(GL_INVALID_ENUM, "endQuery", "invalid target");
2734 return; 2768 return;
2735 } 2769 }
2736 2770
2737 contextGL()->EndQueryEXT(target); 2771 contextGL()->EndQueryEXT(target);
2738 } 2772 }
2739 2773
2740 WebGLQuery* WebGL2RenderingContextBase::getQuery(GLenum target, GLenum pname) { 2774 ScriptValue WebGL2RenderingContextBase::getQuery(ScriptState* scriptState,
2775 GLenum target,
2776 GLenum pname) {
2741 if (isContextLost()) 2777 if (isContextLost())
2742 return nullptr; 2778 return ScriptValue::createNull(scriptState);
2779
2780 if (extensionEnabled(EXTDisjointTimerQueryWebGL2Name)) {
2781 if (pname == GL_QUERY_COUNTER_BITS_EXT) {
2782 if (target == GL_TIMESTAMP_EXT || target == GL_TIME_ELAPSED_EXT) {
2783 GLint value = 0;
2784 contextGL()->GetQueryivEXT(target, pname, &value);
2785 return WebGLAny(scriptState, value);
2786 }
2787 synthesizeGLError(GL_INVALID_ENUM, "getQuery",
2788 "invalid target/pname combination");
2789 return ScriptValue::createNull(scriptState);
2790 }
2791
2792 if (target == GL_TIME_ELAPSED_EXT && pname == GL_CURRENT_QUERY) {
2793 return m_currentElapsedQuery
2794 ? WebGLAny(scriptState, m_currentElapsedQuery)
2795 : ScriptValue::createNull(scriptState);
2796 }
2797
2798 if (target == GL_TIMESTAMP_EXT && pname == GL_CURRENT_QUERY) {
2799 return ScriptValue::createNull(scriptState);
2800 }
2801 }
2743 2802
2744 if (pname != GL_CURRENT_QUERY) { 2803 if (pname != GL_CURRENT_QUERY) {
2745 synthesizeGLError(GL_INVALID_ENUM, "getQuery", "invalid parameter name"); 2804 synthesizeGLError(GL_INVALID_ENUM, "getQuery", "invalid parameter name");
2746 return nullptr; 2805 return ScriptValue::createNull(scriptState);
2747 } 2806 }
2748 2807
2749 switch (target) { 2808 switch (target) {
2750 case GL_ANY_SAMPLES_PASSED: 2809 case GL_ANY_SAMPLES_PASSED:
2751 case GL_ANY_SAMPLES_PASSED_CONSERVATIVE: 2810 case GL_ANY_SAMPLES_PASSED_CONSERVATIVE:
2752 if (m_currentBooleanOcclusionQuery && 2811 if (m_currentBooleanOcclusionQuery &&
2753 m_currentBooleanOcclusionQuery->getTarget() == target) 2812 m_currentBooleanOcclusionQuery->getTarget() == target)
2754 return m_currentBooleanOcclusionQuery; 2813 return WebGLAny(scriptState, m_currentBooleanOcclusionQuery);
2755 break; 2814 break;
2756 case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 2815 case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
2757 return m_currentTransformFeedbackPrimitivesWrittenQuery; 2816 return WebGLAny(scriptState,
2817 m_currentTransformFeedbackPrimitivesWrittenQuery);
2758 default: 2818 default:
2759 synthesizeGLError(GL_INVALID_ENUM, "getQuery", "invalid target"); 2819 synthesizeGLError(GL_INVALID_ENUM, "getQuery", "invalid target");
2760 return nullptr; 2820 return ScriptValue::createNull(scriptState);
2761 } 2821 }
2762 return nullptr; 2822 return ScriptValue::createNull(scriptState);
2763 } 2823 }
2764 2824
2765 ScriptValue WebGL2RenderingContextBase::getQueryParameter( 2825 ScriptValue WebGL2RenderingContextBase::getQueryParameter(
2766 ScriptState* scriptState, 2826 ScriptState* scriptState,
2767 WebGLQuery* query, 2827 WebGLQuery* query,
2768 GLenum pname) { 2828 GLenum pname) {
2769 bool deleted; 2829 bool deleted;
2770 if (!query) { 2830 if (!query) {
2771 synthesizeGLError(GL_INVALID_OPERATION, "getQueryParameter", 2831 synthesizeGLError(GL_INVALID_OPERATION, "getQueryParameter",
2772 "query object is null"); 2832 "query object is null");
2773 return ScriptValue::createNull(scriptState); 2833 return ScriptValue::createNull(scriptState);
2774 } 2834 }
2775 if (!checkObjectToBeBound("getQueryParameter", query, deleted)) 2835 if (!checkObjectToBeBound("getQueryParameter", query, deleted))
2776 return ScriptValue::createNull(scriptState); 2836 return ScriptValue::createNull(scriptState);
2777 if (deleted) { 2837 if (deleted) {
2778 synthesizeGLError(GL_INVALID_OPERATION, "getQueryParameter", 2838 synthesizeGLError(GL_INVALID_OPERATION, "getQueryParameter",
2779 "attempted to access to a deleted query object"); 2839 "attempted to access to a deleted query object");
2780 return ScriptValue::createNull(scriptState); 2840 return ScriptValue::createNull(scriptState);
2781 } 2841 }
2782 2842
2783 // Query is non-null at this point. 2843 // Query is non-null at this point.
2784 if (!query->getTarget()) { 2844 if (!query->getTarget()) {
2785 synthesizeGLError(GL_INVALID_OPERATION, "getQueryParameter", 2845 synthesizeGLError(GL_INVALID_OPERATION, "getQueryParameter",
2786 "'query' is not a query object yet, since it has't been " 2846 "'query' is not a query object yet, since it has't been "
2787 "used by beginQuery"); 2847 "used by beginQuery");
2788 return ScriptValue::createNull(scriptState); 2848 return ScriptValue::createNull(scriptState);
2789 } 2849 }
2790 if (query == m_currentBooleanOcclusionQuery || 2850 if (query == m_currentBooleanOcclusionQuery ||
2791 query == m_currentTransformFeedbackPrimitivesWrittenQuery) { 2851 query == m_currentTransformFeedbackPrimitivesWrittenQuery ||
2852 query == m_currentElapsedQuery) {
2792 synthesizeGLError(GL_INVALID_OPERATION, "getQueryParameter", 2853 synthesizeGLError(GL_INVALID_OPERATION, "getQueryParameter",
2793 "query is currently active"); 2854 "query is currently active");
2794 return ScriptValue::createNull(scriptState); 2855 return ScriptValue::createNull(scriptState);
2795 } 2856 }
2796 2857
2797 switch (pname) { 2858 switch (pname) {
2798 case GL_QUERY_RESULT: { 2859 case GL_QUERY_RESULT: {
2799 query->updateCachedResult(contextGL()); 2860 query->updateCachedResult(contextGL());
2800 return WebGLAny(scriptState, query->getQueryResult()); 2861 return WebGLAny(scriptState, query->getQueryResult());
2801 } 2862 }
(...skipping 1030 matching lines...) Expand 10 before | Expand all | Expand 10 after
3832 case GL_UNPACK_IMAGE_HEIGHT: 3893 case GL_UNPACK_IMAGE_HEIGHT:
3833 return getIntParameter(scriptState, pname); 3894 return getIntParameter(scriptState, pname);
3834 case GL_UNPACK_ROW_LENGTH: 3895 case GL_UNPACK_ROW_LENGTH:
3835 return getIntParameter(scriptState, pname); 3896 return getIntParameter(scriptState, pname);
3836 case GL_UNPACK_SKIP_IMAGES: 3897 case GL_UNPACK_SKIP_IMAGES:
3837 return getIntParameter(scriptState, pname); 3898 return getIntParameter(scriptState, pname);
3838 case GL_UNPACK_SKIP_PIXELS: 3899 case GL_UNPACK_SKIP_PIXELS:
3839 return getIntParameter(scriptState, pname); 3900 return getIntParameter(scriptState, pname);
3840 case GL_UNPACK_SKIP_ROWS: 3901 case GL_UNPACK_SKIP_ROWS:
3841 return getIntParameter(scriptState, pname); 3902 return getIntParameter(scriptState, pname);
3903 case GL_TIMESTAMP_EXT:
3904 if (extensionEnabled(EXTDisjointTimerQueryWebGL2Name)) {
3905 return WebGLAny(scriptState, 0);
3906 }
3907 synthesizeGLError(GL_INVALID_ENUM, "getParameter",
3908 "invalid parameter name, "
3909 "EXT_disjoint_timer_query_webgl2 not enabled");
3910 return ScriptValue::createNull(scriptState);
3911 case GL_GPU_DISJOINT_EXT:
3912 if (extensionEnabled(EXTDisjointTimerQueryWebGL2Name)) {
3913 return getBooleanParameter(scriptState, GL_GPU_DISJOINT_EXT);
3914 }
3915 synthesizeGLError(GL_INVALID_ENUM, "getParameter",
3916 "invalid parameter name, "
3917 "EXT_disjoint_timer_query_webgl2 not enabled");
3918 return ScriptValue::createNull(scriptState);
3842 3919
3843 default: 3920 default:
3844 return WebGLRenderingContextBase::getParameter(scriptState, pname); 3921 return WebGLRenderingContextBase::getParameter(scriptState, pname);
3845 } 3922 }
3846 } 3923 }
3847 3924
3848 ScriptValue WebGL2RenderingContextBase::getInt64Parameter( 3925 ScriptValue WebGL2RenderingContextBase::getInt64Parameter(
3849 ScriptState* scriptState, 3926 ScriptState* scriptState,
3850 GLenum pname) { 3927 GLenum pname) {
3851 GLint64 value = 0; 3928 GLint64 value = 0;
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
4407 visitor->trace(m_boundCopyReadBuffer); 4484 visitor->trace(m_boundCopyReadBuffer);
4408 visitor->trace(m_boundCopyWriteBuffer); 4485 visitor->trace(m_boundCopyWriteBuffer);
4409 visitor->trace(m_boundPixelPackBuffer); 4486 visitor->trace(m_boundPixelPackBuffer);
4410 visitor->trace(m_boundPixelUnpackBuffer); 4487 visitor->trace(m_boundPixelUnpackBuffer);
4411 visitor->trace(m_boundTransformFeedbackBuffer); 4488 visitor->trace(m_boundTransformFeedbackBuffer);
4412 visitor->trace(m_boundUniformBuffer); 4489 visitor->trace(m_boundUniformBuffer);
4413 visitor->trace(m_boundIndexedTransformFeedbackBuffers); 4490 visitor->trace(m_boundIndexedTransformFeedbackBuffers);
4414 visitor->trace(m_boundIndexedUniformBuffers); 4491 visitor->trace(m_boundIndexedUniformBuffers);
4415 visitor->trace(m_currentBooleanOcclusionQuery); 4492 visitor->trace(m_currentBooleanOcclusionQuery);
4416 visitor->trace(m_currentTransformFeedbackPrimitivesWrittenQuery); 4493 visitor->trace(m_currentTransformFeedbackPrimitivesWrittenQuery);
4494 visitor->trace(m_currentElapsedQuery);
4417 visitor->trace(m_samplerUnits); 4495 visitor->trace(m_samplerUnits);
4418 visitor->trace(m_getBufferSubDataAsyncCallbacks); 4496 visitor->trace(m_getBufferSubDataAsyncCallbacks);
4419 WebGLRenderingContextBase::trace(visitor); 4497 WebGLRenderingContextBase::trace(visitor);
4420 } 4498 }
4421 4499
4422 DEFINE_TRACE_WRAPPERS(WebGL2RenderingContextBase) { 4500 DEFINE_TRACE_WRAPPERS(WebGL2RenderingContextBase) {
4423 if (isContextLost()) { 4501 if (isContextLost()) {
4424 return; 4502 return;
4425 } 4503 }
4426 4504
4427 visitor->traceWrappers(m_transformFeedbackBinding); 4505 visitor->traceWrappers(m_transformFeedbackBinding);
4428 visitor->traceWrappers(m_readFramebufferBinding); 4506 visitor->traceWrappers(m_readFramebufferBinding);
4429 visitor->traceWrappers(m_boundCopyReadBuffer); 4507 visitor->traceWrappers(m_boundCopyReadBuffer);
4430 visitor->traceWrappers(m_boundCopyWriteBuffer); 4508 visitor->traceWrappers(m_boundCopyWriteBuffer);
4431 visitor->traceWrappers(m_boundPixelPackBuffer); 4509 visitor->traceWrappers(m_boundPixelPackBuffer);
4432 visitor->traceWrappers(m_boundPixelUnpackBuffer); 4510 visitor->traceWrappers(m_boundPixelUnpackBuffer);
4433 visitor->traceWrappers(m_boundTransformFeedbackBuffer); 4511 visitor->traceWrappers(m_boundTransformFeedbackBuffer);
4434 visitor->traceWrappers(m_boundUniformBuffer); 4512 visitor->traceWrappers(m_boundUniformBuffer);
4435 for (auto& buf : m_boundIndexedTransformFeedbackBuffers) { 4513 for (auto& buf : m_boundIndexedTransformFeedbackBuffers) {
4436 visitor->traceWrappers(buf); 4514 visitor->traceWrappers(buf);
4437 } 4515 }
4438 for (auto& buf : m_boundIndexedUniformBuffers) { 4516 for (auto& buf : m_boundIndexedUniformBuffers) {
4439 visitor->traceWrappers(buf); 4517 visitor->traceWrappers(buf);
4440 } 4518 }
4441 visitor->traceWrappers(m_currentBooleanOcclusionQuery); 4519 visitor->traceWrappers(m_currentBooleanOcclusionQuery);
4442 visitor->traceWrappers(m_currentTransformFeedbackPrimitivesWrittenQuery); 4520 visitor->traceWrappers(m_currentTransformFeedbackPrimitivesWrittenQuery);
4521 visitor->traceWrappers(m_currentElapsedQuery);
4443 for (auto& unit : m_samplerUnits) { 4522 for (auto& unit : m_samplerUnits) {
4444 visitor->traceWrappers(unit); 4523 visitor->traceWrappers(unit);
4445 } 4524 }
4446 WebGLRenderingContextBase::traceWrappers(visitor); 4525 WebGLRenderingContextBase::traceWrappers(visitor);
4447 } 4526 }
4448 4527
4449 WebGLTexture* WebGL2RenderingContextBase::validateTexture3DBinding( 4528 WebGLTexture* WebGL2RenderingContextBase::validateTexture3DBinding(
4450 const char* functionName, 4529 const char* functionName,
4451 GLenum target) { 4530 GLenum target) {
4452 WebGLTexture* tex = nullptr; 4531 WebGLTexture* tex = nullptr;
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
4685 } 4764 }
4686 4765
4687 for (auto& buf : m_boundIndexedUniformBuffers) { 4766 for (auto& buf : m_boundIndexedUniformBuffers) {
4688 DOMWrapperWorld::setWrapperReferencesInAllWorlds(wrapper, buf, isolate); 4767 DOMWrapperWorld::setWrapperReferencesInAllWorlds(wrapper, buf, isolate);
4689 } 4768 }
4690 4769
4691 DOMWrapperWorld::setWrapperReferencesInAllWorlds( 4770 DOMWrapperWorld::setWrapperReferencesInAllWorlds(
4692 wrapper, m_currentBooleanOcclusionQuery, isolate); 4771 wrapper, m_currentBooleanOcclusionQuery, isolate);
4693 DOMWrapperWorld::setWrapperReferencesInAllWorlds( 4772 DOMWrapperWorld::setWrapperReferencesInAllWorlds(
4694 wrapper, m_currentTransformFeedbackPrimitivesWrittenQuery, isolate); 4773 wrapper, m_currentTransformFeedbackPrimitivesWrittenQuery, isolate);
4774 DOMWrapperWorld::setWrapperReferencesInAllWorlds(
4775 wrapper, m_currentElapsedQuery, isolate);
4695 4776
4696 for (auto& unit : m_samplerUnits) { 4777 for (auto& unit : m_samplerUnits) {
4697 DOMWrapperWorld::setWrapperReferencesInAllWorlds(wrapper, unit, isolate); 4778 DOMWrapperWorld::setWrapperReferencesInAllWorlds(wrapper, unit, isolate);
4698 } 4779 }
4699 } 4780 }
4700 4781
4701 WebGLImageConversion::PixelStoreParams 4782 WebGLImageConversion::PixelStoreParams
4702 WebGL2RenderingContextBase::getPackPixelStoreParams() { 4783 WebGL2RenderingContextBase::getPackPixelStoreParams() {
4703 WebGLImageConversion::PixelStoreParams params; 4784 WebGLImageConversion::PixelStoreParams params;
4704 params.alignment = m_packAlignment; 4785 params.alignment = m_packAlignment;
(...skipping 12 matching lines...) Expand all
4717 params.skipPixels = m_unpackSkipPixels; 4798 params.skipPixels = m_unpackSkipPixels;
4718 params.skipRows = m_unpackSkipRows; 4799 params.skipRows = m_unpackSkipRows;
4719 if (dimension == Tex3D) { 4800 if (dimension == Tex3D) {
4720 params.imageHeight = m_unpackImageHeight; 4801 params.imageHeight = m_unpackImageHeight;
4721 params.skipImages = m_unpackSkipImages; 4802 params.skipImages = m_unpackSkipImages;
4722 } 4803 }
4723 return params; 4804 return params;
4724 } 4805 }
4725 4806
4726 } // namespace blink 4807 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698