Disable async pixel transfer API for X11
This commit is contained in:
132
src/patches/0005-tmp-do-not-use-GL_PIXEL_PACK_BUFFER.patch
Normal file
132
src/patches/0005-tmp-do-not-use-GL_PIXEL_PACK_BUFFER.patch
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
From c6782c2ba842c47b6e35299b31d35663645647c7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sergey Lapin <slapinid@gmail.com>
|
||||||
|
Date: Thu, 20 Mar 2025 12:33:50 +0300
|
||||||
|
Subject: [PATCH] tmp: do not use GL_PIXEL_PACK_BUFFER
|
||||||
|
|
||||||
|
---
|
||||||
|
drivers/gles2/rasterizer_storage_gles2.cpp | 26 +++++++-------------
|
||||||
|
drivers/gles3/rasterizer_storage_gles3.cpp | 28 ++++++++--------------
|
||||||
|
2 files changed, 19 insertions(+), 35 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/gles2/rasterizer_storage_gles2.cpp b/drivers/gles2/rasterizer_storage_gles2.cpp
|
||||||
|
index 5caae7cf2c..a649925d75 100644
|
||||||
|
--- a/drivers/gles2/rasterizer_storage_gles2.cpp
|
||||||
|
+++ b/drivers/gles2/rasterizer_storage_gles2.cpp
|
||||||
|
@@ -805,22 +805,29 @@ Ref<Image> RasterizerStorageGLES2::texture_get_data(RID p_texture, int p_layer)
|
||||||
|
return texture->images[p_layer];
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifdef GLES_OVER_GL
|
||||||
|
-
|
||||||
|
Image::Format real_format;
|
||||||
|
GLenum gl_format;
|
||||||
|
GLenum gl_internal_format;
|
||||||
|
GLenum gl_type;
|
||||||
|
bool compressed;
|
||||||
|
+#ifdef GLES_OVER_GL
|
||||||
|
_get_gl_image_and_format(Ref<Image>(), texture->format, texture->flags, real_format, gl_format, gl_internal_format, gl_type, compressed, false);
|
||||||
|
+#else
|
||||||
|
+ _get_gl_image_and_format(Ref<Image>(), texture->format, texture->flags, real_format, gl_format, gl_internal_format, gl_type, compressed, texture->resize_to_po2);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
PoolVector<uint8_t> data;
|
||||||
|
|
||||||
|
+#ifdef GLES_OVER_GL
|
||||||
|
int data_size = Image::get_image_data_size(texture->alloc_width, texture->alloc_height, real_format, texture->mipmaps > 1);
|
||||||
|
+#else
|
||||||
|
+ int data_size = Image::get_image_data_size(texture->alloc_width, texture->alloc_height, Image::FORMAT_RGBA8, false);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
data.resize(data_size * 2); //add some memory at the end, just in case for buggy drivers
|
||||||
|
PoolVector<uint8_t>::Write wb = data.write();
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
gl_wrapper.gl_active_texture(GL_TEXTURE0);
|
||||||
|
|
||||||
|
glBindTexture(texture->target, texture->tex_id);
|
||||||
|
@@ -847,21 +854,6 @@ Ref<Image> RasterizerStorageGLES2::texture_get_data(RID p_texture, int p_layer)
|
||||||
|
|
||||||
|
return Ref<Image>(img);
|
||||||
|
#else
|
||||||
|
-
|
||||||
|
- Image::Format real_format;
|
||||||
|
- GLenum gl_format;
|
||||||
|
- GLenum gl_internal_format;
|
||||||
|
- GLenum gl_type;
|
||||||
|
- bool compressed;
|
||||||
|
- _get_gl_image_and_format(Ref<Image>(), texture->format, texture->flags, real_format, gl_format, gl_internal_format, gl_type, compressed, texture->resize_to_po2);
|
||||||
|
-
|
||||||
|
- PoolVector<uint8_t> data;
|
||||||
|
-
|
||||||
|
- int data_size = Image::get_image_data_size(texture->alloc_width, texture->alloc_height, Image::FORMAT_RGBA8, false);
|
||||||
|
-
|
||||||
|
- data.resize(data_size * 2); //add some memory at the end, just in case for buggy drivers
|
||||||
|
- PoolVector<uint8_t>::Write wb = data.write();
|
||||||
|
-
|
||||||
|
GLuint temp_framebuffer;
|
||||||
|
glGenFramebuffers(1, &temp_framebuffer);
|
||||||
|
|
||||||
|
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
|
||||||
|
index 6fdd8c466d..42ca35746f 100644
|
||||||
|
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
|
||||||
|
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
|
||||||
|
@@ -1165,23 +1165,31 @@ Ref<Image> RasterizerStorageGLES3::texture_get_data(RID p_texture, int p_layer)
|
||||||
|
return Ref<Image>(img);
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifdef GLES_OVER_GL
|
||||||
|
-
|
||||||
|
Image::Format real_format;
|
||||||
|
GLenum gl_format;
|
||||||
|
GLenum gl_internal_format;
|
||||||
|
GLenum gl_type;
|
||||||
|
bool compressed;
|
||||||
|
bool srgb;
|
||||||
|
+#ifdef GLES_OVER_GL
|
||||||
|
+
|
||||||
|
_get_gl_image_and_format(Ref<Image>(), texture->format, texture->flags, real_format, gl_format, gl_internal_format, gl_type, compressed, srgb, false);
|
||||||
|
+#else
|
||||||
|
+ _get_gl_image_and_format(Ref<Image>(), texture->format, texture->flags, real_format, gl_format, gl_internal_format, gl_type, compressed, srgb, texture->is_npot_repeat_mipmap);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
PoolVector<uint8_t> data;
|
||||||
|
|
||||||
|
+#ifdef GLES_OVER_GL
|
||||||
|
int data_size = Image::get_image_data_size(texture->alloc_width, texture->alloc_height, real_format, texture->mipmaps > 1);
|
||||||
|
+#else
|
||||||
|
+ int data_size = Image::get_image_data_size(texture->alloc_width, texture->alloc_height, Image::FORMAT_RGBA8, false);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
data.resize(data_size * 2); //add some memory at the end, just in case for buggy drivers
|
||||||
|
PoolVector<uint8_t>::Write wb = data.write();
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
gl_wrapper.gl_active_texture(GL_TEXTURE0);
|
||||||
|
|
||||||
|
glBindTexture(texture->target, texture->tex_id);
|
||||||
|
@@ -1232,22 +1240,6 @@ Ref<Image> RasterizerStorageGLES3::texture_get_data(RID p_texture, int p_layer)
|
||||||
|
|
||||||
|
return Ref<Image>(img);
|
||||||
|
#else
|
||||||
|
-
|
||||||
|
- Image::Format real_format;
|
||||||
|
- GLenum gl_format;
|
||||||
|
- GLenum gl_internal_format;
|
||||||
|
- GLenum gl_type;
|
||||||
|
- bool compressed;
|
||||||
|
- bool srgb;
|
||||||
|
- _get_gl_image_and_format(Ref<Image>(), texture->format, texture->flags, real_format, gl_format, gl_internal_format, gl_type, compressed, srgb, texture->is_npot_repeat_mipmap);
|
||||||
|
-
|
||||||
|
- PoolVector<uint8_t> data;
|
||||||
|
-
|
||||||
|
- int data_size = Image::get_image_data_size(texture->alloc_width, texture->alloc_height, Image::FORMAT_RGBA8, false);
|
||||||
|
-
|
||||||
|
- data.resize(data_size * 2); //add some memory at the end, just in case for buggy drivers
|
||||||
|
- PoolVector<uint8_t>::Write wb = data.write();
|
||||||
|
-
|
||||||
|
GLuint temp_framebuffer;
|
||||||
|
glGenFramebuffers(1, &temp_framebuffer);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
Reference in New Issue
Block a user