mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +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")
|
if( CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
set( CMAKE_BUILD_TYPE Debug)
|
set( CMAKE_BUILD_TYPE Debug)
|
||||||
set( DEBUG_BUILD TRUE)
|
set( DEBUG_BUILD TRUE)
|
||||||
# add_definitions(
|
add_definitions(
|
||||||
# -DDEBUG
|
-DGL_DEBUG
|
||||||
# )
|
)
|
||||||
endif( CMAKE_BUILD_TYPE STREQUAL "Debug")
|
endif( CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
|
||||||
if(EGL)
|
if(EGL)
|
||||||
|
|
|
@ -163,6 +163,7 @@ PFNGLCREATEBUFFERSPROC g_glCreateBuffers;
|
||||||
PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers;
|
PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers;
|
||||||
PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture;
|
PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture;
|
||||||
PFNGLDRAWELEMENTSBASEVERTEXPROC g_glDrawElementsBaseVertex;
|
PFNGLDRAWELEMENTSBASEVERTEXPROC g_glDrawElementsBaseVertex;
|
||||||
|
PFNGLFLUSHMAPPEDBUFFERRANGEPROC g_glFlushMappedBufferRange;
|
||||||
|
|
||||||
void initGLFunctions()
|
void initGLFunctions()
|
||||||
{
|
{
|
||||||
|
@ -297,4 +298,5 @@ void initGLFunctions()
|
||||||
GL_GET_PROC_ADR(PFNGLCREATEFRAMEBUFFERSPROC, glCreateFramebuffers);
|
GL_GET_PROC_ADR(PFNGLCREATEFRAMEBUFFERSPROC, glCreateFramebuffers);
|
||||||
GL_GET_PROC_ADR(PFNGLNAMEDFRAMEBUFFERTEXTUREPROC, glNamedFramebufferTexture);
|
GL_GET_PROC_ADR(PFNGLNAMEDFRAMEBUFFERTEXTUREPROC, glNamedFramebufferTexture);
|
||||||
GL_GET_PROC_ADR(PFNGLDRAWELEMENTSBASEVERTEXPROC, glDrawElementsBaseVertex);
|
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 glCreateFramebuffers g_glCreateFramebuffers
|
||||||
#define glNamedFramebufferTexture g_glNamedFramebufferTexture
|
#define glNamedFramebufferTexture g_glNamedFramebufferTexture
|
||||||
#define glDrawElementsBaseVertex g_glDrawElementsBaseVertex
|
#define glDrawElementsBaseVertex g_glDrawElementsBaseVertex
|
||||||
|
#define glFlushMappedBufferRange g_glFlushMappedBufferRange
|
||||||
|
|
||||||
extern PFNGLCREATESHADERPROC g_glCreateShader;
|
extern PFNGLCREATESHADERPROC g_glCreateShader;
|
||||||
extern PFNGLCOMPILESHADERPROC g_glCompileShader;
|
extern PFNGLCOMPILESHADERPROC g_glCompileShader;
|
||||||
|
@ -273,6 +274,7 @@ extern PFNGLCREATEBUFFERSPROC g_glCreateBuffers;
|
||||||
extern PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers;
|
extern PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers;
|
||||||
extern PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture;
|
extern PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture;
|
||||||
extern PFNGLDRAWELEMENTSBASEVERTEXPROC g_glDrawElementsBaseVertex;
|
extern PFNGLDRAWELEMENTSBASEVERTEXPROC g_glDrawElementsBaseVertex;
|
||||||
|
extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC g_glFlushMappedBufferRange;
|
||||||
|
|
||||||
void initGLFunctions();
|
void initGLFunctions();
|
||||||
|
|
||||||
|
|
|
@ -179,8 +179,8 @@ public:
|
||||||
{
|
{
|
||||||
glGenBuffers(1, &m_PBO);
|
glGenBuffers(1, &m_PBO);
|
||||||
m_bind->bind(graphics::Parameter(GL_PIXEL_UNPACK_BUFFER), graphics::ObjectHandle(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);
|
glBufferStorage(GL_PIXEL_UNPACK_BUFFER, m_size * 32, nullptr, m_bufAccessBits);
|
||||||
m_bufferData = glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, m_size * 32, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
|
m_bufferData = glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, m_size * 32, m_bufMapBits);
|
||||||
m_bufferOffset = 0;
|
m_bufferOffset = 0;
|
||||||
m_bind->bind(graphics::Parameter(GL_PIXEL_UNPACK_BUFFER), graphics::ObjectHandle());
|
m_bind->bind(graphics::Parameter(GL_PIXEL_UNPACK_BUFFER), graphics::ObjectHandle());
|
||||||
}
|
}
|
||||||
|
@ -201,6 +201,9 @@ public:
|
||||||
|
|
||||||
void closeWriteBuffer() override
|
void closeWriteBuffer() override
|
||||||
{
|
{
|
||||||
|
#ifdef GL_DEBUG
|
||||||
|
glFlushMappedBufferRange(GL_PIXEL_UNPACK_BUFFER, m_bufferOffset, m_size);
|
||||||
|
#endif
|
||||||
m_bufferOffset += m_size;
|
m_bufferOffset += m_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,6 +225,13 @@ private:
|
||||||
void* m_bufferData;
|
void* m_bufferData;
|
||||||
u32 m_bufferOffset;
|
u32 m_bufferOffset;
|
||||||
GLuint m_PBO;
|
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
|
class MemoryWriteBuffer : public graphics::PixelWriteBuffer
|
||||||
|
|
|
@ -8,6 +8,13 @@ using namespace graphics;
|
||||||
using namespace opengl;
|
using namespace opengl;
|
||||||
|
|
||||||
const u32 BufferedDrawer::m_bufMaxSize = 4194304;
|
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)
|
BufferedDrawer::BufferedDrawer(const GLInfo & _glinfo, CachedVertexAttribArray * _cachedAttribArray, CachedBindBuffer * _bindBuffer)
|
||||||
: m_glInfo(_glinfo)
|
: m_glInfo(_glinfo)
|
||||||
|
@ -48,8 +55,8 @@ void BufferedDrawer::_initBuffer(Buffer & _buffer, GLuint _bufSize)
|
||||||
glGenBuffers(1, &_buffer.handle);
|
glGenBuffers(1, &_buffer.handle);
|
||||||
m_bindBuffer->bind(Parameter(_buffer.type), ObjectHandle(_buffer.handle));
|
m_bindBuffer->bind(Parameter(_buffer.type), ObjectHandle(_buffer.handle));
|
||||||
if (m_glInfo.bufferStorage) {
|
if (m_glInfo.bufferStorage) {
|
||||||
glBufferStorage(_buffer.type, _bufSize, nullptr, 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, GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT);
|
_buffer.data = (GLubyte*)glMapBufferRange(_buffer.type, 0, _bufSize, m_bufMapBits);
|
||||||
} else {
|
} else {
|
||||||
glBufferData(_buffer.type, _bufSize, nullptr, GL_DYNAMIC_DRAW);
|
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) {
|
if (m_glInfo.bufferStorage) {
|
||||||
memcpy(&_buffer.data[_buffer.offset], _data, _dataSize);
|
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 {
|
} else {
|
||||||
m_bindBuffer->bind(Parameter(_buffer.type), ObjectHandle(_buffer.handle));
|
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);
|
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;
|
BufferOffsets m_rectBufferOffsets;
|
||||||
|
|
||||||
static const u32 m_bufMaxSize;
|
static const u32 m_bufMaxSize;
|
||||||
|
static const GLbitfield m_bufAccessBits;
|
||||||
|
static const GLbitfield m_bufMapBits;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user