From 6bf6cd3f19d2c791c72368262f9837e32dcc6d7b Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Tue, 31 Dec 2024 12:07:49 +0000 Subject: [PATCH] LibWeb/WebGL: Account for subarrays in tex(Sub)Image{2D,3D} This allows Ruffle to correctly upload textures. --- .../LibWeb/GenerateWebGLRenderingContext.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp index d55f787d659..9226ac6fde7 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWebGLRenderingContext.cpp @@ -692,7 +692,7 @@ public: if (pixels) { auto const& viewed_array_buffer = pixels->viewed_array_buffer(); auto const& byte_buffer = viewed_array_buffer->buffer(); - pixels_ptr = byte_buffer.data(); + pixels_ptr = byte_buffer.data() + pixels->byte_offset(); } glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels_ptr); )~~~"); @@ -711,7 +711,7 @@ public: if (src_data) { auto const& viewed_array_buffer = src_data->viewed_array_buffer(); auto const& byte_buffer = viewed_array_buffer->buffer(); - src_data_ptr = byte_buffer.data(); + src_data_ptr = byte_buffer.data() + src_data->byte_offset(); } glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, src_data_ptr); )~~~"); @@ -808,7 +808,7 @@ public: if (pixels) { auto const& viewed_array_buffer = pixels->viewed_array_buffer(); auto const& byte_buffer = viewed_array_buffer->buffer(); - pixels_ptr = byte_buffer.data(); + pixels_ptr = byte_buffer.data() + pixels->byte_offset(); } glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels_ptr); )~~~"); @@ -872,7 +872,7 @@ public: if (src_data) { auto const& viewed_array_buffer = src_data->viewed_array_buffer(); auto const& byte_buffer = viewed_array_buffer->buffer(); - pixels_ptr = byte_buffer.data() + src_offset; + pixels_ptr = byte_buffer.data() + src_data->byte_offset() + src_offset; } glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels_ptr); )~~~");