diff --git a/app/src/main/tinywrapper/egl.c b/app/src/main/tinywrapper/egl.c index 0bfe9aa..16753d4 100644 --- a/app/src/main/tinywrapper/egl.c +++ b/app/src/main/tinywrapper/egl.c @@ -70,9 +70,8 @@ static void find_esversion(context_t* context) { } if(esmajor == 3) { context->es31 = esminor >= 1; - context->es32 = esminor >= 2; }else if(esmajor > 3) { - context->es32 = context->es31 = true; + context->es31 = true; } return; diff --git a/app/src/main/tinywrapper/egl.h b/app/src/main/tinywrapper/egl.h index 45479c8..29f68d2 100644 --- a/app/src/main/tinywrapper/egl.h +++ b/app/src/main/tinywrapper/egl.h @@ -57,7 +57,7 @@ typedef struct { typedef struct { EGLContext phys_context; bool context_rdy; - bool es31, es32; + bool es31; basevertex_renderer_t basevertex; GLuint multidraw_element_buffer; framebuffer_copier_t framebuffer_copier; diff --git a/app/src/main/tinywrapper/es3_extended.h b/app/src/main/tinywrapper/es3_extended.h index 8fdfdbd..eea3337 100644 --- a/app/src/main/tinywrapper/es3_extended.h +++ b/app/src/main/tinywrapper/es3_extended.h @@ -3,5 +3,4 @@ GLESFUNC(glDrawElementsIndirect,PFNGLDRAWELEMENTSINDIRECTPROC) GLESFUNC(glMultiDrawArraysEXT,PFNGLMULTIDRAWARRAYSEXTPROC) GLESFUNC(glMultiDrawElementsEXT,PFNGLMULTIDRAWELEMENTSEXTPROC) GLESFUNC(glGetTexLevelParameteriv,PFNGLGETTEXLEVELPARAMETERIVPROC) -GLESFUNC(glGetTexLevelParameterfv,PFNGLGETTEXLEVELPARAMETERFVPROC) -GLESFUNC(glDrawElementsBaseVertex, PFNGLDRAWELEMENTSBASEVERTEXPROC) \ No newline at end of file +GLESFUNC(glGetTexLevelParameterfv,PFNGLGETTEXLEVELPARAMETERIVPROC) \ No newline at end of file diff --git a/app/src/main/tinywrapper/main.c b/app/src/main/tinywrapper/main.c index d7098bf..1d3163f 100644 --- a/app/src/main/tinywrapper/main.c +++ b/app/src/main/tinywrapper/main.c @@ -32,11 +32,11 @@ void *glMapBuffer(GLenum target, GLenum access) { case GL_SHADER_STORAGE_BUFFER: // GL 4.4 case GL_QUERY_BUFFER: - printf("ERROR: glMapBuffer unsupported target=0x%x\n", target); + printf("ERROR: glMapBuffer unsupported target=0x%x", target); break; // not supported for now case GL_DRAW_INDIRECT_BUFFER: case GL_TEXTURE_BUFFER: - printf("ERROR: glMapBuffer unimplemented target=0x%x\n", target); + printf("ERROR: glMapBuffer unimplemented target=0x%x", target); break; } @@ -79,49 +79,30 @@ static int inline nlevel(int size, int level) { static bool trigger_texlevelparameter = false; -static bool check_texlevelparameter() { - if(current_context->es31) return true; - if(trigger_texlevelparameter) return false; - printf("glGetTexLevelParameter* functions are not supported below OpenGL ES 3.1\n"); - trigger_texlevelparameter = true; - return false; -} - -static void proxy_getlevelparameter(GLenum target, GLint level, GLenum pname, GLint *params) { - switch (pname) { - case GL_TEXTURE_WIDTH: - (*params) = nlevel(current_context->proxy_width, level); - break; - case GL_TEXTURE_HEIGHT: - (*params) = nlevel(current_context->proxy_height, level); - break; - case GL_TEXTURE_INTERNAL_FORMAT: - (*params) = current_context->proxy_intformat; - break; - } -} - -void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) { - if(!current_context) return; - if(isProxyTexture(target)) { - GLint param = 0; - proxy_getlevelparameter(target, level, pname, ¶m); - *params = (GLfloat) param; - return; - } - if(!check_texlevelparameter()) return; - es3_functions.glGetTexLevelParameterfv(target, level, pname, params); -} - void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) { if(!current_context) return; + // NSLog("glGetTexLevelParameteriv(%x, %d, %x, %p)", target, level, pname, params); if (isProxyTexture(target)) { - proxy_getlevelparameter(target, level, pname, params); - return; + switch (pname) { + case GL_TEXTURE_WIDTH: + (*params) = nlevel(current_context->proxy_width, level); + break; + case GL_TEXTURE_HEIGHT: + (*params) = nlevel(current_context->proxy_height, level); + break; + case GL_TEXTURE_INTERNAL_FORMAT: + (*params) = current_context->proxy_intformat; + break; + } + } else { + if(trigger_texlevelparameter) return; + if(!current_context->es31) { + printf("glGetTexLevelParameter* functions are not supported on your device"); + trigger_texlevelparameter = true; + return; + } + es3_functions.glGetTexLevelParameteriv(target, level, pname, params); } - if(!check_texlevelparameter()) return; - es3_functions.glGetTexLevelParameteriv(target, level, pname, params); - } void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *data) { diff --git a/app/src/main/tinywrapper/of_buffer_copier.c b/app/src/main/tinywrapper/of_buffer_copier.c index 6893d08..de1fc7b 100644 --- a/app/src/main/tinywrapper/of_buffer_copier.c +++ b/app/src/main/tinywrapper/of_buffer_copier.c @@ -72,25 +72,8 @@ void glGetTexImage( GLenum target, GLenum format, GLenum type, void * pixels) { - if(!current_context) return; - if(!current_context->es31) goto unsupported_esver; - if(format != GL_RGBA && format != GL_RGBA_INTEGER && type != GL_UNSIGNED_BYTE && type != GL_UNSIGNED_INT && type != GL_INT && type != GL_FLOAT) goto unsupported; - framebuffer_copier_t* copier = ¤t_context->framebuffer_copier; - GLint texture; - es3_functions.glGetIntegerv(get_target_query_param(target), &texture); - es3_functions.glBindFramebuffer(GL_READ_FRAMEBUFFER, copier->tempfb); - es3_functions.glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, target, texture, level); - GLint w, h; - es3_functions.glGetTexLevelParameteriv(target, level, GL_TEXTURE_WIDTH, &w); - es3_functions.glGetTexLevelParameteriv(target, level, GL_TEXTURE_HEIGHT, &h); - es3_functions.glReadPixels(0, 0, w, h, format, type, pixels); - es3_functions.glFramebufferRenderbuffer(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 0); - return; - unsupported_esver: - printf("LTW: glGetTexImage only supported on OpenGL ES 3.1"); - return; - unsupported: - printf("LTW: unsupported parameters for glGetTexImage"); + //printf("glGetTexImage(%x, %i, %x, %x, %p)\n", target, level, format, type, pixels); + printf("LTW: glGetTexImage is not supported yet\n"); } void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * data) {