Bladeren bron

LibWeb/WebGL2: Implement clientWaitSync

Luke Wilde 6 maanden geleden
bovenliggende
commit
ff8a9549f1

+ 1 - 1
Libraries/LibWeb/WebGL/WebGL2RenderingContextBase.idl

@@ -399,7 +399,7 @@ interface mixin WebGL2RenderingContextBase {
     WebGLSync? fenceSync(GLenum condition, GLbitfield flags);
     WebGLSync? fenceSync(GLenum condition, GLbitfield flags);
     [FIXME] GLboolean isSync(WebGLSync? sync); // [WebGLHandlesContextLoss]
     [FIXME] GLboolean isSync(WebGLSync? sync); // [WebGLHandlesContextLoss]
     [FIXME] undefined deleteSync(WebGLSync? sync);
     [FIXME] undefined deleteSync(WebGLSync? sync);
-    [FIXME] GLenum clientWaitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout);
+    GLenum clientWaitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout);
     [FIXME] undefined waitSync(WebGLSync sync, GLbitfield flags, GLint64 timeout);
     [FIXME] undefined waitSync(WebGLSync sync, GLbitfield flags, GLint64 timeout);
     [FIXME] any getSyncParameter(WebGLSync sync, GLenum pname);
     [FIXME] any getSyncParameter(WebGLSync sync, GLenum pname);
 
 

+ 5 - 0
Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp

@@ -948,6 +948,11 @@ public:
                 gl_call_arguments.append(ByteString::formatted("{} ? {}->handle() : 0", parameter_name, parameter_name));
                 gl_call_arguments.append(ByteString::formatted("{} ? {}->handle() : 0", parameter_name, parameter_name));
                 continue;
                 continue;
             }
             }
+            if (parameter.type->name() == "WebGLSync"sv) {
+                // FIXME: Remove the GLsync cast once sync_handle actually returns the proper GLsync type.
+                gl_call_arguments.append(ByteString::formatted("(GLsync)({} ? {}->sync_handle() : nullptr)", parameter_name, parameter_name));
+                continue;
+            }
             if (parameter.type->name() == "BufferSource"sv) {
             if (parameter.type->name() == "BufferSource"sv) {
                 function_impl_generator.set("buffer_source_name", parameter_name);
                 function_impl_generator.set("buffer_source_name", parameter_name);
                 function_impl_generator.append(R"~~~(
                 function_impl_generator.append(R"~~~(