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:
parent
acff19e66c
commit
9c16d1e75c
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -77,6 +77,8 @@ namespace opengl {
|
|||
BufferOffsets m_rectBufferOffsets;
|
||||
|
||||
static const u32 m_bufMaxSize;
|
||||
static const GLbitfield m_bufAccessBits;
|
||||
static const GLbitfield m_bufMapBits;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user