From 62f8520dd768411b810642448ba957a9c6ceed71 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Sun, 23 Feb 2025 17:47:28 +0800 Subject: [PATCH] misc(buffer, texture): more logs --- src/main/cpp/gl/buffer.cpp | 11 ++++++++++- src/main/cpp/gl/buffer.h | 2 ++ src/main/cpp/gl/texture.cpp | 16 +++++++++------- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/cpp/gl/buffer.cpp b/src/main/cpp/gl/buffer.cpp index 11bf19d..7a06f82 100644 --- a/src/main/cpp/gl/buffer.cpp +++ b/src/main/cpp/gl/buffer.cpp @@ -21,6 +21,7 @@ static GLenum get_binding_query(GLenum target) { void* glMapBuffer(GLenum target, GLenum access) { LOG() + LOG_D("glMapBuffer, target = %s, access = %s", glEnumToString(target), glEnumToString(access)) if (get_binding_query(target) == 0) { return NULL; } @@ -40,7 +41,7 @@ void* glMapBuffer(GLenum target, GLenum access) { GLbitfield flags = 0; switch (access) { case GL_READ_ONLY: flags = GL_MAP_READ_BIT; break; - case GL_WRITE_ONLY: flags = GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT; break; + case GL_WRITE_ONLY: flags = GL_MAP_WRITE_BIT; /*| GL_MAP_INVALIDATE_BUFFER_BIT*/; break; case GL_READ_WRITE: flags = GL_MAP_READ_BIT | GL_MAP_WRITE_BIT; break; default: return NULL; @@ -105,4 +106,12 @@ void glBufferStorage(GLenum target, GLsizeiptr size, const void* data, GLbitfiel LOAD_GLES_FUNC(glBufferStorageEXT) gles_glBufferStorageEXT(target,size,data,flags); CHECK_GL_ERROR +} + +void glBindBuffer(GLenum target, GLuint buffer) { + LOG() + LOG_D("glBindBuffer, target = %s, buffer = %d", glEnumToString(target), buffer) + + LOAD_GLES_FUNC(glBindBuffer) + gles_glBindBuffer(target, buffer); } \ No newline at end of file diff --git a/src/main/cpp/gl/buffer.h b/src/main/cpp/gl/buffer.h index 77b8a81..662ae96 100644 --- a/src/main/cpp/gl/buffer.h +++ b/src/main/cpp/gl/buffer.h @@ -35,6 +35,8 @@ GLAPI GLAPIENTRY void *glMapBuffer(GLenum target, GLenum access); GLAPI GLAPIENTRY void glBufferStorage(GLenum target, GLsizeiptr size, const void* data, GLbitfield flags); +GLAPI GLAPIENTRY void glBindBuffer(GLenum target, GLuint buffer); + #ifdef __cplusplus } #endif diff --git a/src/main/cpp/gl/texture.cpp b/src/main/cpp/gl/texture.cpp index fe5da55..ac6862d 100644 --- a/src/main/cpp/gl/texture.cpp +++ b/src/main/cpp/gl/texture.cpp @@ -287,13 +287,13 @@ void glTexImage2D(GLenum target, GLint level,GLint internalFormat,GLsizei width, auto& tex = g_textures[bound_texture]; tex.internal_format = internalFormat; tex.format = format; - LOG_D("mg_glTexImage2D,target: %s,level: %d,internalFormat: %s->%s,width: %d,height: %d,border: %d,format: %s,type: %s", + LOG_D("mg_glTexImage2D,target: %s,level: %d,internalFormat: %s->%s,width: %d,height: %d,border: %d,format: %s,type: %s, pixels: 0x%x", glEnumToString(target),level,glEnumToString(internalFormat),glEnumToString(internalFormat), - width,height,border,glEnumToString(format),glEnumToString(type)); + width,height,border,glEnumToString(format),glEnumToString(type), pixels); internal_convert(reinterpret_cast(&internalFormat), &type, &format); - LOG_D("gles_glTexImage2D,target: %s,level: %d,internalFormat: %s->%s,width: %d,height: %d,border: %d,format: %s,type: %s", + LOG_D("gles_glTexImage2D,target: %s,level: %d,internalFormat: %s->%s,width: %d,height: %d,border: %d,format: %s,type: %s, pixels: 0x%x", glEnumToString(target),level,glEnumToString(internalFormat),glEnumToString(internalFormat), - width,height,border,glEnumToString(format),glEnumToString(type)); + width,height,border,glEnumToString(format),glEnumToString(type), pixels); GLenum rtarget = map_tex_target(target); if(rtarget == GL_PROXY_TEXTURE_2D) { int max1 = 4096; @@ -304,8 +304,7 @@ void glTexImage2D(GLenum target, GLint level,GLint internalFormat,GLsizei width, set_gl_state_proxy_intformat(internalFormat); return; } - LOAD_GLES(glTexImage2D, void, GLenum target, GLint level,GLint internalFormat,GLsizei width, GLsizei height,GLint border, GLenum format, GLenum type,const GLvoid* pixels); - gles_glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels); + if (tex.format == GL_BGRA && internalFormat == GL_RGBA8 && width <= 128 && height <= 128) { // xaero has 64x64 tiles...hack here LOG_D("Detected GL_BGRA format @ tex = %d, do swizzle", bound_texture); if (tex.swizzle_param[0] == 0) { // assert this as never called glTexParameteri(..., GL_TEXTURE_SWIZZLE_R, ...) @@ -333,6 +332,9 @@ void glTexImage2D(GLenum target, GLint level,GLint internalFormat,GLsizei width, CHECK_GL_ERROR } + LOAD_GLES(glTexImage2D, void, GLenum target, GLint level,GLint internalFormat,GLsizei width, GLsizei height,GLint border, GLenum format, GLenum type,const GLvoid* pixels); + gles_glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels); + CHECK_GL_ERROR } @@ -924,7 +926,7 @@ void glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, co void glPixelStorei(GLenum pname, GLint param) { LOG_D("glPixelStorei, pname = %s, param = %s", glEnumToString(pname), glEnumToString(param)) - LOAD_GLES_FUNC(glPixelStorei) + LOAD_GLES_FUNC(glPixelStorei) gles_glPixelStorei(pname, param); } \ No newline at end of file