diff --git a/Libraries/LibWeb/WebGL/WebGL2RenderingContextBase.idl b/Libraries/LibWeb/WebGL/WebGL2RenderingContextBase.idl index c65abc38231..a1440143004 100644 --- a/Libraries/LibWeb/WebGL/WebGL2RenderingContextBase.idl +++ b/Libraries/LibWeb/WebGL/WebGL2RenderingContextBase.idl @@ -423,7 +423,7 @@ interface mixin WebGL2RenderingContextBase { [FIXME] any getActiveUniforms(WebGLProgram program, sequence uniformIndices, GLenum pname); [FIXME] GLuint getUniformBlockIndex(WebGLProgram program, DOMString uniformBlockName); [FIXME] any getActiveUniformBlockParameter(WebGLProgram program, GLuint uniformBlockIndex, GLenum pname); - [FIXME] DOMString? getActiveUniformBlockName(WebGLProgram program, GLuint uniformBlockIndex); + DOMString? getActiveUniformBlockName(WebGLProgram program, GLuint uniformBlockIndex); undefined uniformBlockBinding(WebGLProgram program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); // Vertex Array Objects diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp index 3cd7fb8e1f0..b258c5152e6 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp @@ -1112,6 +1112,21 @@ public: continue; } + if (function.name == "getActiveUniformBlockName"sv) { + generate_webgl_object_handle_unwrap(function_impl_generator, "program"sv, "OptionalNone {}"sv); + function_impl_generator.append(R"~~~( + GLint uniform_block_name_length = 0; + glGetActiveUniformBlockiv(program_handle, uniform_block_index, GL_UNIFORM_BLOCK_NAME_LENGTH, &uniform_block_name_length); + Vector uniform_block_name; + uniform_block_name.resize(uniform_block_name_length); + if (!uniform_block_name_length) + return String {}; + glGetActiveUniformBlockName(program_handle, uniform_block_index, uniform_block_name_length, nullptr, uniform_block_name.data()); + return String::from_utf8_without_validation(ReadonlyBytes { uniform_block_name.data(), static_cast(uniform_block_name_length - 1) }); +)~~~"); + continue; + } + if (function.name == "deleteBuffer"sv) { generate_webgl_object_handle_unwrap(function_impl_generator, "buffer"sv, ""sv); function_impl_generator.append(R"~~~(