LibWeb/WebGL: Implement EXT_blend_minmax extension
Some checks are pending
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run

This commit is contained in:
Luke Wilde 2025-04-07 16:47:26 +01:00 committed by Alexander Kalenik
commit 948349974c
Notes: github-actions[bot] 2025-04-07 21:22:06 +00:00
8 changed files with 101 additions and 0 deletions

View file

@ -15,6 +15,7 @@
#include <LibWeb/Painting/Paintable.h>
#include <LibWeb/WebGL/EventNames.h>
#include <LibWeb/WebGL/Extensions/ANGLEInstancedArrays.h>
#include <LibWeb/WebGL/Extensions/EXTBlendMinMax.h>
#include <LibWeb/WebGL/Extensions/OESVertexArrayObject.h>
#include <LibWeb/WebGL/Extensions/WebGLCompressedTextureS3tc.h>
#include <LibWeb/WebGL/Extensions/WebGLDrawBuffers.h>
@ -93,6 +94,7 @@ void WebGLRenderingContext::visit_edges(Cell::Visitor& visitor)
WebGLRenderingContextImpl::visit_edges(visitor);
visitor.visit(m_canvas_element);
visitor.visit(m_angle_instanced_arrays_extension);
visitor.visit(m_ext_blend_min_max_extension);
visitor.visit(m_oes_vertex_array_object_extension);
visitor.visit(m_webgl_compressed_texture_s3tc_extension);
visitor.visit(m_webgl_draw_buffers_extension);
@ -202,6 +204,15 @@ JS::Object* WebGLRenderingContext::get_extension(String const& name)
return m_angle_instanced_arrays_extension;
}
if (Infra::is_ascii_case_insensitive_match(name, "EXT_blend_minmax"sv)) {
if (!m_ext_blend_min_max_extension) {
m_ext_blend_min_max_extension = MUST(Extensions::EXTBlendMinMax::create(realm(), *this));
}
VERIFY(m_ext_blend_min_max_extension);
return m_ext_blend_min_max_extension;
}
if (Infra::is_ascii_case_insensitive_match(name, "OES_vertex_array_object"sv)) {
if (!m_oes_vertex_array_object_extension) {
m_oes_vertex_array_object_extension = MUST(Extensions::OESVertexArrayObject::create(realm(), *this));