1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-04 10:03:36 +00:00

Make compatible with apitrace in Debug mode

This commit is contained in:
Logan McNaughton 2017-02-07 11:44:52 -08:00 committed by Sergey Lipskiy
parent acff19e66c
commit 9c16d1e75c
6 changed files with 34 additions and 7 deletions

View File

@ -241,9 +241,9 @@ endif( NOT CMAKE_BUILD_TYPE)
if( CMAKE_BUILD_TYPE STREQUAL "Debug")
set( CMAKE_BUILD_TYPE Debug)
set( DEBUG_BUILD TRUE)
# add_definitions(
# -DDEBUG
# )
add_definitions(
-DGL_DEBUG
)
endif( CMAKE_BUILD_TYPE STREQUAL "Debug")
if(EGL)

View File

@ -163,6 +163,7 @@ PFNGLCREATEBUFFERSPROC g_glCreateBuffers;
PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers;
PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture;
PFNGLDRAWELEMENTSBASEVERTEXPROC g_glDrawElementsBaseVertex;
PFNGLFLUSHMAPPEDBUFFERRANGEPROC g_glFlushMappedBufferRange;
void initGLFunctions()
{
@ -297,4 +298,5 @@ void initGLFunctions()
GL_GET_PROC_ADR(PFNGLCREATEFRAMEBUFFERSPROC, glCreateFramebuffers);
GL_GET_PROC_ADR(PFNGLNAMEDFRAMEBUFFERTEXTUREPROC, glNamedFramebufferTexture);
GL_GET_PROC_ADR(PFNGLDRAWELEMENTSBASEVERTEXPROC, glDrawElementsBaseVertex);
GL_GET_PROC_ADR(PFNGLFLUSHMAPPEDBUFFERRANGEPROC, glFlushMappedBufferRange);
}

View File

@ -180,6 +180,7 @@ extern PFNGLBLENDCOLORPROC g_glBlendColor;
#define glCreateFramebuffers g_glCreateFramebuffers
#define glNamedFramebufferTexture g_glNamedFramebufferTexture
#define glDrawElementsBaseVertex g_glDrawElementsBaseVertex
#define glFlushMappedBufferRange g_glFlushMappedBufferRange
extern PFNGLCREATESHADERPROC g_glCreateShader;
extern PFNGLCOMPILESHADERPROC g_glCompileShader;
@ -273,6 +274,7 @@ extern PFNGLCREATEBUFFERSPROC g_glCreateBuffers;
extern PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers;
extern PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture;
extern PFNGLDRAWELEMENTSBASEVERTEXPROC g_glDrawElementsBaseVertex;
extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC g_glFlushMappedBufferRange;
void initGLFunctions();

View File

@ -179,8 +179,8 @@ public:
{
glGenBuffers(1, &m_PBO);
m_bind->bind(graphics::Parameter(GL_PIXEL_UNPACK_BUFFER), graphics::ObjectHandle(m_PBO));
glBufferStorage(GL_PIXEL_UNPACK_BUFFER, m_size * 32, nullptr, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
m_bufferData = glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, m_size * 32, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
glBufferStorage(GL_PIXEL_UNPACK_BUFFER, m_size * 32, nullptr, m_bufAccessBits);
m_bufferData = glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, m_size * 32, m_bufMapBits);
m_bufferOffset = 0;
m_bind->bind(graphics::Parameter(GL_PIXEL_UNPACK_BUFFER), graphics::ObjectHandle());
}
@ -201,6 +201,9 @@ public:
void closeWriteBuffer() override
{
#ifdef GL_DEBUG
glFlushMappedBufferRange(GL_PIXEL_UNPACK_BUFFER, m_bufferOffset, m_size);
#endif
m_bufferOffset += m_size;
}
@ -222,6 +225,13 @@ private:
void* m_bufferData;
u32 m_bufferOffset;
GLuint m_PBO;
#ifndef GL_DEBUG
GLbitfield m_bufAccessBits = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT;
GLbitfield m_bufMapBits = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT;
#else
GLbitfield m_bufAccessBits = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT;
GLbitfield m_bufMapBits = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_FLUSH_EXPLICIT_BIT;
#endif
};
class MemoryWriteBuffer : public graphics::PixelWriteBuffer

View File

@ -8,6 +8,13 @@ using namespace graphics;
using namespace opengl;
const u32 BufferedDrawer::m_bufMaxSize = 4194304;
#ifndef GL_DEBUG
const GLbitfield BufferedDrawer::m_bufAccessBits = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT;
const GLbitfield BufferedDrawer::m_bufMapBits = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT;
#else
const GLbitfield BufferedDrawer::m_bufAccessBits = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT;
const GLbitfield BufferedDrawer::m_bufMapBits = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_FLUSH_EXPLICIT_BIT;
#endif
BufferedDrawer::BufferedDrawer(const GLInfo & _glinfo, CachedVertexAttribArray * _cachedAttribArray, CachedBindBuffer * _bindBuffer)
: m_glInfo(_glinfo)
@ -48,8 +55,8 @@ void BufferedDrawer::_initBuffer(Buffer & _buffer, GLuint _bufSize)
glGenBuffers(1, &_buffer.handle);
m_bindBuffer->bind(Parameter(_buffer.type), ObjectHandle(_buffer.handle));
if (m_glInfo.bufferStorage) {
glBufferStorage(_buffer.type, _bufSize, nullptr, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
_buffer.data = (GLubyte*)glMapBufferRange(_buffer.type, 0, _bufSize, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
glBufferStorage(_buffer.type, _bufSize, nullptr, m_bufAccessBits);
_buffer.data = (GLubyte*)glMapBufferRange(_buffer.type, 0, _bufSize, m_bufMapBits);
} else {
glBufferData(_buffer.type, _bufSize, nullptr, GL_DYNAMIC_DRAW);
}
@ -75,6 +82,10 @@ void BufferedDrawer::_updateBuffer(Buffer & _buffer, u32 _count, u32 _dataSize,
if (m_glInfo.bufferStorage) {
memcpy(&_buffer.data[_buffer.offset], _data, _dataSize);
#ifdef GL_DEBUG
m_bindBuffer->bind(Parameter(_buffer.type), ObjectHandle(_buffer.handle));
glFlushMappedBufferRange(_buffer.type, _buffer.offset, _dataSize);
#endif
} else {
m_bindBuffer->bind(Parameter(_buffer.type), ObjectHandle(_buffer.handle));
void* buffer_pointer = glMapBufferRange(_buffer.type, _buffer.offset, _dataSize, GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT);

View File

@ -77,6 +77,8 @@ namespace opengl {
BufferOffsets m_rectBufferOffsets;
static const u32 m_bufMaxSize;
static const GLbitfield m_bufAccessBits;
static const GLbitfield m_bufMapBits;
};
}