renderer: fix gles30/webgl breakage
This commit is contained in:
parent
a6bb29529b
commit
d10c5d0e7e
6 changed files with 15 additions and 1 deletions
|
@ -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) {
|
bool gl33_texture_dump(Texture *tex, uint mipmap, uint layer, Pixmap *dst) {
|
||||||
|
#ifdef STATIC_GLES3
|
||||||
|
UNREACHABLE;
|
||||||
|
#else
|
||||||
if(tex->fmt_info->flags & GLTEX_COMPRESSED) {
|
if(tex->fmt_info->flags & GLTEX_COMPRESSED) {
|
||||||
// TODO
|
// TODO
|
||||||
return false;
|
return false;
|
||||||
|
@ -617,4 +620,5 @@ bool gl33_texture_dump(Texture *tex, uint mipmap, uint layer, Pixmap *dst) {
|
||||||
);
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -223,7 +223,7 @@ struct glext_s {
|
||||||
#undef GLES_ATLEAST
|
#undef GLES_ATLEAST
|
||||||
#define GLES_ATLEAST(mjr, mnr) (glext.version.is_es && GLANY_ATLEAST(mjr, mnr))
|
#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)
|
#define HAVE_GL_FUNC(func) (&(func) != NULL)
|
||||||
#else
|
#else
|
||||||
#define HAVE_GL_FUNC(func) ((func) != NULL)
|
#define HAVE_GL_FUNC(func) ((func) != NULL)
|
||||||
|
|
|
@ -59,6 +59,7 @@ RendererBackend _r_backend_gles20 = {
|
||||||
.name = "gles20",
|
.name = "gles20",
|
||||||
.funcs = {
|
.funcs = {
|
||||||
.init = gles20_init,
|
.init = gles20_init,
|
||||||
|
.texture_dump = gles_texture_dump,
|
||||||
.screenshot = gles_screenshot,
|
.screenshot = gles_screenshot,
|
||||||
.index_buffer_create = gles20_index_buffer_create,
|
.index_buffer_create = gles20_index_buffer_create,
|
||||||
.index_buffer_get_capacity = gles20_index_buffer_get_capacity,
|
.index_buffer_get_capacity = gles20_index_buffer_get_capacity,
|
||||||
|
|
|
@ -19,6 +19,7 @@ RendererBackend _r_backend_gles30 = {
|
||||||
.name = "gles30",
|
.name = "gles30",
|
||||||
.funcs = {
|
.funcs = {
|
||||||
.init = gles30_init,
|
.init = gles30_init,
|
||||||
|
.texture_dump = gles_texture_dump,
|
||||||
.screenshot = gles_screenshot,
|
.screenshot = gles_screenshot,
|
||||||
},
|
},
|
||||||
.custom = &(GLBackendData) {
|
.custom = &(GLBackendData) {
|
||||||
|
|
|
@ -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);
|
glReadPixels(vp.x, vp.y, vp.w, vp.h, GL_RGBA, GL_UNSIGNED_BYTE, out->data.untyped);
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -16,5 +16,6 @@
|
||||||
void gles_init(RendererBackend *gles_backend, int major, int minor);
|
void gles_init(RendererBackend *gles_backend, int major, int minor);
|
||||||
void gles_init_context(SDL_Window *w);
|
void gles_init_context(SDL_Window *w);
|
||||||
bool gles_screenshot(Pixmap *out);
|
bool gles_screenshot(Pixmap *out);
|
||||||
|
bool gles_texture_dump(Texture *tex, uint mipmap, uint layer, Pixmap *dst);
|
||||||
|
|
||||||
#endif // IGUARD_renderer_glescommon_gles_h
|
#endif // IGUARD_renderer_glescommon_gles_h
|
||||||
|
|
Loading…
Reference in a new issue