Added support for GLES on X11
This commit is contained in:
11275
src/patches/0005-Made-GLES-work-on-X11.patch
Normal file
11275
src/patches/0005-Made-GLES-work-on-X11.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,132 +0,0 @@
|
||||
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