From d10c5d0e7e344d130d8dfebf16bc0a1f6cebd24c Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 18 Jul 2021 11:16:16 +0300 Subject: [PATCH] renderer: fix gles30/webgl breakage --- src/renderer/gl33/texture.c | 4 ++++ src/renderer/glcommon/opengl.h | 2 +- src/renderer/gles20/gles20.c | 1 + src/renderer/gles30/gles30.c | 1 + src/renderer/glescommon/gles.c | 7 +++++++ src/renderer/glescommon/gles.h | 1 + 6 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/renderer/gl33/texture.c b/src/renderer/gl33/texture.c index c9593ffe..76b1e24e 100644 --- a/src/renderer/gl33/texture.c +++ b/src/renderer/gl33/texture.c @@ -593,6 +593,9 @@ bool gl33_texture_sampler_compatible(Texture *tex, UniformType sampler_type) { } bool gl33_texture_dump(Texture *tex, uint mipmap, uint layer, Pixmap *dst) { +#ifdef STATIC_GLES3 + UNREACHABLE; +#else if(tex->fmt_info->flags & GLTEX_COMPRESSED) { // TODO return false; @@ -617,4 +620,5 @@ bool gl33_texture_dump(Texture *tex, uint mipmap, uint layer, Pixmap *dst) { ); return true; +#endif } diff --git a/src/renderer/glcommon/opengl.h b/src/renderer/glcommon/opengl.h index d9b4ddd2..40ea309c 100644 --- a/src/renderer/glcommon/opengl.h +++ b/src/renderer/glcommon/opengl.h @@ -223,7 +223,7 @@ struct glext_s { #undef GLES_ATLEAST #define GLES_ATLEAST(mjr, mnr) (glext.version.is_es && GLANY_ATLEAST(mjr, mnr)) -#ifdef STATIC_GLESS +#ifdef STATIC_GLES3 #define HAVE_GL_FUNC(func) (&(func) != NULL) #else #define HAVE_GL_FUNC(func) ((func) != NULL) diff --git a/src/renderer/gles20/gles20.c b/src/renderer/gles20/gles20.c index be420eb4..6f62f53e 100644 --- a/src/renderer/gles20/gles20.c +++ b/src/renderer/gles20/gles20.c @@ -59,6 +59,7 @@ RendererBackend _r_backend_gles20 = { .name = "gles20", .funcs = { .init = gles20_init, + .texture_dump = gles_texture_dump, .screenshot = gles_screenshot, .index_buffer_create = gles20_index_buffer_create, .index_buffer_get_capacity = gles20_index_buffer_get_capacity, diff --git a/src/renderer/gles30/gles30.c b/src/renderer/gles30/gles30.c index ecb704ed..833f3235 100644 --- a/src/renderer/gles30/gles30.c +++ b/src/renderer/gles30/gles30.c @@ -19,6 +19,7 @@ RendererBackend _r_backend_gles30 = { .name = "gles30", .funcs = { .init = gles30_init, + .texture_dump = gles_texture_dump, .screenshot = gles_screenshot, }, .custom = &(GLBackendData) { diff --git a/src/renderer/glescommon/gles.c b/src/renderer/glescommon/gles.c index 4bcd9031..c56ee9bb 100644 --- a/src/renderer/glescommon/gles.c +++ b/src/renderer/glescommon/gles.c @@ -59,3 +59,10 @@ bool gles_screenshot(Pixmap *out) { glReadPixels(vp.x, vp.y, vp.w, vp.h, GL_RGBA, GL_UNSIGNED_BYTE, out->data.untyped); return true; } + +bool gles_texture_dump(Texture *tex, uint mipmap, uint layer, Pixmap *dst) { + // No glGetTexImage in GLES + // TODO maybe set up a transient framebuffer to read from? + log_warn("FIXME: not implemented"); + return false; +} diff --git a/src/renderer/glescommon/gles.h b/src/renderer/glescommon/gles.h index 80c4c6c7..f6f7582a 100644 --- a/src/renderer/glescommon/gles.h +++ b/src/renderer/glescommon/gles.h @@ -16,5 +16,6 @@ void gles_init(RendererBackend *gles_backend, int major, int minor); void gles_init_context(SDL_Window *w); bool gles_screenshot(Pixmap *out); +bool gles_texture_dump(Texture *tex, uint mipmap, uint layer, Pixmap *dst); #endif // IGUARD_renderer_glescommon_gles_h