blob: 69c18723e55ae13f21bdcbb212917bb7495a7e78 [file] [log] [blame]
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_union_offscreen_rendering_context.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_union_rendering_context.h"
#include "third_party/blink/renderer/modules/webgl/ext_clip_control.h"
#include "third_party/blink/renderer/modules/webgl/ext_color_buffer_float.h"
#include "third_party/blink/renderer/modules/webgl/ext_color_buffer_half_float.h"
#include "third_party/blink/renderer/modules/webgl/ext_conservative_depth.h"
#include "third_party/blink/renderer/modules/webgl/ext_depth_clamp.h"
#include "third_party/blink/renderer/modules/webgl/ext_disjoint_timer_query_webgl2.h"
#include "third_party/blink/renderer/modules/webgl/ext_float_blend.h"
#include "third_party/blink/renderer/modules/webgl/ext_polygon_offset_clamp.h"
#include "third_party/blink/renderer/modules/webgl/ext_render_snorm.h"
#include "third_party/blink/renderer/modules/webgl/ext_texture_compression_bptc.h"
#include "third_party/blink/renderer/modules/webgl/ext_texture_compression_rgtc.h"
#include "third_party/blink/renderer/modules/webgl/ext_texture_filter_anisotropic.h"
#include "third_party/blink/renderer/modules/webgl/ext_texture_mirror_clamp_to_edge.h"
#include "third_party/blink/renderer/modules/webgl/ext_texture_norm_16.h"
#include "third_party/blink/renderer/modules/webgl/khr_parallel_shader_compile.h"
#include "third_party/blink/renderer/modules/webgl/nv_shader_noperspective_interpolation.h"
#include "third_party/blink/renderer/modules/webgl/oes_draw_buffers_indexed.h"
#include "third_party/blink/renderer/modules/webgl/oes_sample_variables.h"
#include "third_party/blink/renderer/modules/webgl/oes_shader_multisample_interpolation.h"
#include "third_party/blink/renderer/modules/webgl/oes_texture_float_linear.h"
#include "third_party/blink/renderer/modules/webgl/ovr_multiview_2.h"
#include "third_party/blink/renderer/modules/webgl/webgl_blend_func_extended.h"
#include "third_party/blink/renderer/modules/webgl/webgl_clip_cull_distance.h"
#include "third_party/blink/renderer/modules/webgl/webgl_compressed_texture_astc.h"
#include "third_party/blink/renderer/modules/webgl/webgl_compressed_texture_etc.h"
#include "third_party/blink/renderer/modules/webgl/webgl_compressed_texture_etc1.h"
#include "third_party/blink/renderer/modules/webgl/webgl_compressed_texture_pvrtc.h"
#include "third_party/blink/renderer/modules/webgl/webgl_compressed_texture_s3tc.h"
#include "third_party/blink/renderer/modules/webgl/webgl_compressed_texture_s3tc_srgb.h"
#include "third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.h"
#include "third_party/blink/renderer/modules/webgl/webgl_context_event.h"
#include "third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.h"
#include "third_party/blink/renderer/modules/webgl/webgl_debug_shaders.h"
#include "third_party/blink/renderer/modules/webgl/webgl_draw_instanced_base_vertex_base_instance.h"
#include "third_party/blink/renderer/modules/webgl/webgl_lose_context.h"
#include "third_party/blink/renderer/modules/webgl/webgl_multi_draw.h"
#include "third_party/blink/renderer/modules/webgl/webgl_multi_draw_instanced_base_vertex_base_instance.h"
#include "third_party/blink/renderer/modules/webgl/webgl_polygon_mode.h"
#include "third_party/blink/renderer/modules/webgl/webgl_provoking_vertex.h"
#include "third_party/blink/renderer/modules/webgl/webgl_render_shared_exponent.h"
#include "third_party/blink/renderer/modules/webgl/webgl_shader_pixel_local_storage.h"
#include "third_party/blink/renderer/modules/webgl/webgl_stencil_texturing.h"
namespace blink {
WebGL2RenderingContext::WebGL2RenderingContext(
CanvasRenderingContextHost* host,
std::unique_ptr<WebGraphicsContext3DProvider> context_provider,
const Platform::WebGLContextInfo& context_info,
const CanvasContextCreationAttributesCore& requested_attributes)
: WebGL2RenderingContextBase(host,
std::move(context_provider),
context_info,
requested_attributes,
Platform::kWebGL2ContextType) {}
V8RenderingContext* WebGL2RenderingContext::AsV8RenderingContext() {
return MakeGarbageCollected<V8RenderingContext>(this);
}
V8OffscreenRenderingContext*
WebGL2RenderingContext::AsV8OffscreenRenderingContext() {
return MakeGarbageCollected<V8OffscreenRenderingContext>(this);
}
ImageBitmap* WebGL2RenderingContext::TransferToImageBitmap(
ScriptState* script_state,
ExceptionState& exception_state) {
return TransferToImageBitmapBase(script_state, exception_state);
}
void WebGL2RenderingContext::RegisterContextExtensions() {
// Register extensions.
RegisterExtension<EXTClipControl>();
RegisterExtension<EXTColorBufferFloat>();
RegisterExtension<EXTColorBufferHalfFloat>();
RegisterExtension<EXTConservativeDepth>();
RegisterExtension<EXTDepthClamp>();
RegisterExtension<EXTDisjointTimerQueryWebGL2>(
TimerQueryExtensionsEnabled() ? kApprovedExtension : kDeveloperExtension);
RegisterExtension<EXTFloatBlend>();
RegisterExtension<EXTPolygonOffsetClamp>();
RegisterExtension<EXTRenderSnorm>();
RegisterExtension<EXTTextureCompressionBPTC>();
RegisterExtension<EXTTextureCompressionRGTC>();
RegisterExtension<EXTTextureFilterAnisotropic>();
RegisterExtension<EXTTextureMirrorClampToEdge>();
RegisterExtension<EXTTextureNorm16>();
RegisterExtension<KHRParallelShaderCompile>();
RegisterExtension<NVShaderNoperspectiveInterpolation>();
RegisterExtension<OESDrawBuffersIndexed>();
RegisterExtension<OESSampleVariables>();
RegisterExtension<OESShaderMultisampleInterpolation>();
RegisterExtension<OESTextureFloatLinear>();
RegisterExtension<OVRMultiview2>();
RegisterExtension<WebGLBlendFuncExtended>();
RegisterExtension<WebGLClipCullDistance>();
RegisterExtension<WebGLCompressedTextureASTC>();
RegisterExtension<WebGLCompressedTextureETC>();
RegisterExtension<WebGLCompressedTextureETC1>();
RegisterExtension<WebGLCompressedTexturePVRTC>();
RegisterExtension<WebGLCompressedTextureS3TC>();
RegisterExtension<WebGLCompressedTextureS3TCsRGB>();
RegisterExtension<WebGLDebugRendererInfo>();
RegisterExtension<WebGLDebugShaders>();
RegisterExtension<WebGLDrawInstancedBaseVertexBaseInstance>(kDraftExtension);
RegisterExtension<WebGLLoseContext>();
RegisterExtension<WebGLMultiDraw>();
RegisterExtension<WebGLMultiDrawInstancedBaseVertexBaseInstance>(
kDraftExtension);
RegisterExtension<WebGLPolygonMode>();
RegisterExtension<WebGLProvokingVertex>();
RegisterExtension<WebGLRenderSharedExponent>();
RegisterExtension<WebGLShaderPixelLocalStorage>(kDraftExtension);
RegisterExtension<WebGLStencilTexturing>();
}
} // namespace blink