Object Memory management small optimization

This commit is contained in:
korenkonder
2025-06-28 23:39:08 +03:00
parent 8149e4ffe3
commit fcfd91c35f
4 changed files with 25 additions and 10 deletions
+17 -7
View File
@@ -1213,10 +1213,15 @@ static void free_index_buffer(GLuint buffer) {
disp_manager->check_index_buffer(buffer);
GLint size;
gl_state.bind_element_array_buffer(buffer);
glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
gl_state.bind_element_array_buffer(0);
GLint size = 0;
if (DIVA_GL_VERSION_4_5)
glGetNamedBufferParameteriv(buffer, GL_BUFFER_SIZE, &size);
else {
gl_state.bind_element_array_buffer(buffer);
glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
gl_state.bind_element_array_buffer(0);
}
bufobj_mgr.ib_all_size -= size;
glDeleteBuffers(1, &buffer);
@@ -1230,9 +1235,14 @@ static void free_vertex_buffer(GLuint buffer) {
disp_manager->check_vertex_buffer(buffer);
GLint size = 0;
gl_state.bind_array_buffer(buffer);
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
gl_state.bind_array_buffer(0);
if (DIVA_GL_VERSION_4_5)
glGetNamedBufferParameteriv(buffer, GL_BUFFER_SIZE, &size);
else {
gl_state.bind_array_buffer(buffer);
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
gl_state.bind_array_buffer(0);
}
bufobj_mgr.vb_all_size -= size;
glDeleteBuffers(1, &buffer);
+3 -3
View File
@@ -228,13 +228,13 @@ namespace spr {
}
SpriteManager::RenderData::~RenderData() {
ebo.Destroy();
vbo.Destroy();
if (vao[0]) {
glDeleteVertexArrays(3, vao);
vao[0] = 0;
}
ebo.Destroy();
vbo.Destroy();
}
template <typename T>
+2
View File
@@ -2469,6 +2469,7 @@ PFNGLNAMEDBUFFERSUBDATAPROC divagl_glNamedBufferSubData = 0;
PFNGLMAPNAMEDBUFFERPROC divagl_glMapNamedBuffer = 0;
PFNGLMAPNAMEDBUFFERRANGEPROC divagl_glMapNamedBufferRange = 0;
PFNGLUNMAPNAMEDBUFFERPROC divagl_glUnmapNamedBuffer = 0;
PFNGLGETNAMEDBUFFERPARAMETERIVPROC divagl_glGetNamedBufferParameteriv = 0;
PFNGLTEXTURESUBIMAGE2DPROC divagl_glTextureSubImage2D = 0;
PFNGLGENERATETEXTUREMIPMAPPROC divagl_glGenerateTextureMipmap = 0;
PFNGLBINDTEXTUREUNITPROC divagl_glBindTextureUnit = 0;
@@ -2624,6 +2625,7 @@ HOOK(void, FASTCALL, wglGetProcAddresses, 0x0000000140461B50) {
glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)wglGetProcAddressDLL("glMapNamedBuffer");
glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)wglGetProcAddressDLL("glMapNamedBufferRange");
glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)wglGetProcAddressDLL("glUnmapNamedBuffer");
glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)wglGetProcAddressDLL("glGetNamedBufferParameteriv");
glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)wglGetProcAddressDLL("glTextureSubImage2D");
glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)wglGetProcAddressDLL("glGenerateTextureMipmap");
glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)wglGetProcAddressDLL("glBindTextureUnit");
+3
View File
@@ -1262,6 +1262,7 @@ typedef void (GLAPIENTRY* PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr
typedef void* (GLAPIENTRY* PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access);
typedef void* (GLAPIENTRY* PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
typedef GLboolean (GLAPIENTRY* PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer);
typedef void (GLAPIENTRY* PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, GLint* params);
typedef void (GLAPIENTRY* PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels);
typedef void (GLAPIENTRY* PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture);
typedef void (GLAPIENTRY* PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture);
@@ -2520,6 +2521,7 @@ extern PFNGLNAMEDBUFFERSUBDATAPROC divagl_glNamedBufferSubData;
extern PFNGLMAPNAMEDBUFFERPROC divagl_glMapNamedBuffer;
extern PFNGLMAPNAMEDBUFFERRANGEPROC divagl_glMapNamedBufferRange;
extern PFNGLUNMAPNAMEDBUFFERPROC divagl_glUnmapNamedBuffer;
extern PFNGLGETNAMEDBUFFERPARAMETERIVPROC divagl_glGetNamedBufferParameteriv;
extern PFNGLTEXTURESUBIMAGE2DPROC divagl_glTextureSubImage2D;
extern PFNGLGENERATETEXTUREMIPMAPPROC divagl_glGenerateTextureMipmap;
extern PFNGLBINDTEXTUREUNITPROC divagl_glBindTextureUnit;
@@ -3778,6 +3780,7 @@ extern PFNGLBINDTEXTUREUNITPROC divagl_glBindTextureUnit;
#define glMapNamedBuffer divagl_glMapNamedBuffer
#define glMapNamedBufferRange divagl_glMapNamedBufferRange
#define glUnmapNamedBuffer divagl_glUnmapNamedBuffer
#define glGetNamedBufferParameteriv divagl_glGetNamedBufferParameteriv
#define glTextureSubImage2D divagl_glTextureSubImage2D
#define glGenerateTextureMipmap divagl_glGenerateTextureMipmap
#define glBindTextureUnit divagl_glBindTextureUnit