@@ -311,8 +311,6 @@ void InitVertexArrayMap(size_t expectedSize) {
311311 g_element_array_buffer_per_vao.resize (1 , 0 );
312312}
313313
314- unordered_map<GLuint, BufferMapping> g_active_mappings;
315-
316314void glGenBuffers (GLsizei n, GLuint* buffers) {
317315 LOG ()
318316 LOG_D (" glGenBuffers(%i, %p)" , n, buffers)
@@ -711,17 +709,6 @@ void* glMapBuffer(GLenum target, GLenum access) {
711709 if (g_gles_caps.GL_OES_mapbuffer ) {
712710 return GLES .glMapBufferOES (target, access);
713711 }
714- if (get_binding_query (target) == 0 ) {
715- return nullptr ;
716- }
717- GLint current_buffer;
718- GLES .glGetIntegerv (get_binding_query (target), ¤t_buffer);
719- if (current_buffer == 0 ) {
720- return nullptr ;
721- }
722- if (g_active_mappings[current_buffer].mapped_ptr != nullptr ) {
723- return nullptr ;
724- }
725712 GLint buffer_size;
726713 GLES .glGetBufferParameteriv (target, GL_BUFFER_SIZE , &buffer_size);
727714 if (buffer_size <= 0 || glGetError () != GL_NO_ERROR ) {
@@ -733,39 +720,16 @@ void* glMapBuffer(GLenum target, GLenum access) {
733720 flags = GL_MAP_READ_BIT ;
734721 break ;
735722 case GL_WRITE_ONLY :
736- flags = GL_MAP_WRITE_BIT /* | GL_MAP_INVALIDATE_BUFFER_BIT*/ ;
723+ flags = GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT ;
737724 break ;
738725 case GL_READ_WRITE :
739726 flags = GL_MAP_READ_BIT | GL_MAP_WRITE_BIT ;
740727 break ;
741728 default :
742729 return nullptr ;
743730 }
744- void * ptr = GLES .glMapBufferRange (target, 0 , buffer_size, flags);
745- if (!ptr) return nullptr ;
746- BufferMapping mapping;
747- mapping.target = target;
748- mapping.buffer_id = (GLuint)current_buffer;
749- mapping.mapped_ptr = ptr;
750- #if GLOBAL_DEBUG || DEBUG
751- if (target == GL_PIXEL_UNPACK_BUFFER ) {
752- mapping.client_ptr = malloc (buffer_size);
753- memset (mapping.client_ptr , 0xFF , buffer_size);
754- }
755- #endif
756- mapping.size = buffer_size;
757- mapping.flags = flags;
758- mapping.is_dirty = (flags & GL_MAP_WRITE_BIT ) ? GL_TRUE : GL_FALSE ;
759- g_active_mappings[current_buffer] = mapping;
760- CHECK_GL_ERROR
761- #if GLOBAL_DEBUG || DEBUG
762- if (target == GL_PIXEL_UNPACK_BUFFER )
763- return mapping.client_ptr ;
764- else
765- return ptr;
766- #else
731+ void * ptr = glMapBufferRange (target, 0 , buffer_size, flags);
767732 return ptr;
768- #endif
769733}
770734
771735#if GLOBAL_DEBUG || DEBUG
@@ -798,31 +762,7 @@ GLboolean glUnmapBuffer(GLenum target) {
798762 LOG_D (" %s(%s)" , __func__, glEnumToString (target));
799763 if (g_gles_caps.GL_OES_mapbuffer ) return GLES .glUnmapBuffer (target);
800764
801- GLint buffer;
802- GLenum binding_query = get_binding_query (target);
803- GLES .glGetIntegerv (binding_query, &buffer);
804-
805- if (buffer == 0 ) return GL_FALSE ;
806-
807- #if GLOBAL_DEBUG || DEBUG
808- // Blit data from client side to OpenGL here
809- if (target == GL_PIXEL_UNPACK_BUFFER ) {
810- auto & mapping = g_active_mappings[buffer];
811-
812- std::fstream fs (std::string (BIN_FILE_PREFIX ) + " buf" + std::to_string (buffer) + " .bin" ,
813- std::ios::out | std::ios::binary | std::ios::trunc);
814- fs.write ((const char *)mapping.client_ptr , mapping.size );
815- fs.close ();
816-
817- // memset(mapping.mapped_ptr, 0xFF, mapping.size);
818- memcpy (mapping.mapped_ptr , mapping.client_ptr , mapping.size );
819- free (mapping.client_ptr );
820- mapping.client_ptr = nullptr ;
821- }
822- #endif
823-
824765 GLboolean result = GLES .glUnmapBuffer (target);
825- g_active_mappings.erase (buffer);
826766 CHECK_GL_ERROR
827767 return result;
828768}
0 commit comments