gsdx-ogl-wnd:

* Remove bad redefinition of glActiveTexture and glBlendColor pointer
* Remove glew dependency on linux
* s/OGL_DEBUG/ENABLE_OGL_DEBUG/ and enable it on debug


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5512 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
gregory.hainaut 2013-01-16 18:25:53 +00:00
parent fb9c4e5a61
commit 58cc2ddd1f
8 changed files with 78 additions and 86 deletions

View File

@ -18,7 +18,7 @@ set(CommonFlags
-Wunused-variable -Wunused-variable
-std=c++0x -std=c++0x
-fno-strict-aliasing -fno-strict-aliasing
#-DOGL_DEBUG # FIXME remove me when code is ready #-DENABLE_OGL_DEBUG # FIXME remove me when code is ready
) )
set(OptimizationFlags set(OptimizationFlags
@ -28,7 +28,7 @@ set(OptimizationFlags
# Debug - Build # Debug - Build
if(CMAKE_BUILD_TYPE STREQUAL Debug) if(CMAKE_BUILD_TYPE STREQUAL Debug)
add_definitions(${CommonFlags} -DOGL_DEBUG -g -Wall) add_definitions(${CommonFlags} -DENABLE_OGL_DEBUG -g -Wall)
endif(CMAKE_BUILD_TYPE STREQUAL Debug) endif(CMAKE_BUILD_TYPE STREQUAL Debug)
# Devel - Build # Devel - Build
@ -181,7 +181,6 @@ include_directories(.)
add_library(${Output} SHARED ${GSdxSources} ${GSdxHeaders}) add_library(${Output} SHARED ${GSdxSources} ${GSdxHeaders})
target_link_libraries(${Output} ${X11_LIBRARIES}) target_link_libraries(${Output} ${X11_LIBRARIES})
target_link_libraries(${Output} ${GLEW_LIBRARY})
target_link_libraries(${Output} ${OPENGL_LIBRARIES}) target_link_libraries(${Output} ${OPENGL_LIBRARIES})
if(Linux) if(Linux)
@ -221,14 +220,12 @@ if(BUILD_REPLAY_LOADERS)
target_link_libraries(${Static} ${OPENGL_LIBRARIES}) target_link_libraries(${Static} ${OPENGL_LIBRARIES})
target_link_libraries(${Static} ${X11_LIBRARIES}) target_link_libraries(${Static} ${X11_LIBRARIES})
target_link_libraries(${Static} ${GLEW_LIBRARY})
target_link_libraries(${Static} ${GTK2_LIBRARIES}) target_link_libraries(${Static} ${GTK2_LIBRARIES})
target_link_libraries(${Replay} ${Static}) target_link_libraries(${Replay} ${Static})
# Warning others lib must be linked after GSdx... # Warning others lib must be linked after GSdx...
target_link_libraries(${Replay} ${OPENGL_LIBRARIES}) target_link_libraries(${Replay} ${OPENGL_LIBRARIES})
target_link_libraries(${Replay} ${X11_LIBRARIES}) target_link_libraries(${Replay} ${X11_LIBRARIES})
target_link_libraries(${Replay} ${GLEW_LIBRARY})
target_link_libraries(${Replay} ${GTK2_LIBRARIES}) target_link_libraries(${Replay} ${GTK2_LIBRARIES})
if(NOT USER_CMAKE_LD_FLAGS STREQUAL "") if(NOT USER_CMAKE_LD_FLAGS STREQUAL "")

View File

@ -22,7 +22,6 @@
#include "stdafx.h" #include "stdafx.h"
#include "GLLoader.h" #include "GLLoader.h"
PFNGLACTIVETEXTUREPROC glActiveTexture = NULL;
PFNGLATTACHSHADERPROC glAttachShader = NULL; PFNGLATTACHSHADERPROC glAttachShader = NULL;
PFNGLBINDBUFFERPROC glBindBuffer = NULL; PFNGLBINDBUFFERPROC glBindBuffer = NULL;
PFNGLBINDBUFFERBASEPROC glBindBufferBase = NULL; PFNGLBINDBUFFERBASEPROC glBindBufferBase = NULL;
@ -31,7 +30,6 @@ PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer = NULL;
PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline = NULL; PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline = NULL;
PFNGLBINDSAMPLERPROC glBindSampler = NULL; PFNGLBINDSAMPLERPROC glBindSampler = NULL;
PFNGLBINDVERTEXARRAYPROC glBindVertexArray = NULL; PFNGLBINDVERTEXARRAYPROC glBindVertexArray = NULL;
PFNGLBLENDCOLORPROC glBlendColor = NULL;
PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate = NULL; PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate = NULL;
PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate = NULL; PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate = NULL;
PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer = NULL; PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer = NULL;
@ -110,7 +108,6 @@ namespace GLLoader {
} }
void init_gl_function() { void init_gl_function() {
GL_LOADFN(glActiveTexture);
GL_LOADFN(glAttachShader); GL_LOADFN(glAttachShader);
GL_LOADFN(glBindBuffer); GL_LOADFN(glBindBuffer);
GL_LOADFN(glBindBufferBase); GL_LOADFN(glBindBufferBase);
@ -119,7 +116,6 @@ namespace GLLoader {
GL_LOADFN(glBindProgramPipeline); GL_LOADFN(glBindProgramPipeline);
GL_LOADFN(glBindSampler); GL_LOADFN(glBindSampler);
GL_LOADFN(glBindVertexArray); GL_LOADFN(glBindVertexArray);
GL_LOADFN(glBlendColor);
GL_LOADFN(glBlendEquationSeparate); GL_LOADFN(glBlendEquationSeparate);
GL_LOADFN(glBlendFuncSeparate); GL_LOADFN(glBlendFuncSeparate);
GL_LOADFN(glBlitFramebuffer); GL_LOADFN(glBlitFramebuffer);

View File

@ -33,71 +33,67 @@
fprintf(stderr,"Failed to find %s\n", #name); \ fprintf(stderr,"Failed to find %s\n", #name); \
} \ } \
} }
// Use glew
//#define GL_LOADFN(name)
#endif #endif
extern PFNGLACTIVETEXTUREPROC glActiveTexture; extern PFNGLATTACHSHADERPROC glAttachShader;
extern PFNGLATTACHSHADERPROC glAttachShader; extern PFNGLBINDBUFFERPROC glBindBuffer;
extern PFNGLBINDBUFFERPROC glBindBuffer; extern PFNGLBINDBUFFERBASEPROC glBindBufferBase;
extern PFNGLBINDBUFFERBASEPROC glBindBufferBase; extern PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed;
extern PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed; extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer; extern PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;
extern PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline; extern PFNGLBINDSAMPLERPROC glBindSampler;
extern PFNGLBINDSAMPLERPROC glBindSampler; extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray; extern PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate;
extern PFNGLBLENDCOLORPROC glBlendColor; extern PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
extern PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate; extern PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
extern PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate; extern PFNGLBUFFERDATAPROC glBufferData;
extern PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer; extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
extern PFNGLBUFFERDATAPROC glBufferData; extern PFNGLCLEARBUFFERFVPROC glClearBufferfv;
extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; extern PFNGLCLEARBUFFERIVPROC glClearBufferiv;
extern PFNGLCLEARBUFFERFVPROC glClearBufferfv; extern PFNGLCOMPILESHADERPROC glCompileShader;
extern PFNGLCLEARBUFFERIVPROC glClearBufferiv; extern PFNGLCOPYIMAGESUBDATANVPROC glCopyImageSubDataNV;
extern PFNGLCOMPILESHADERPROC glCompileShader; extern PFNGLCREATEPROGRAMPROC glCreateProgram;
extern PFNGLCOPYIMAGESUBDATANVPROC glCopyImageSubDataNV; extern PFNGLCREATESHADERPROC glCreateShader;
extern PFNGLCREATEPROGRAMPROC glCreateProgram; extern PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv;
extern PFNGLCREATESHADERPROC glCreateShader; extern PFNGLDELETEBUFFERSPROC glDeleteBuffers;
extern PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv; extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
extern PFNGLDELETEBUFFERSPROC glDeleteBuffers; extern PFNGLDELETEPROGRAMPROC glDeleteProgram;
extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; extern PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;
extern PFNGLDELETEPROGRAMPROC glDeleteProgram; extern PFNGLDELETESAMPLERSPROC glDeleteSamplers;
extern PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines; extern PFNGLDELETESHADERPROC glDeleteShader;
extern PFNGLDELETESAMPLERSPROC glDeleteSamplers; extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
extern PFNGLDELETESHADERPROC glDeleteShader; extern PFNGLDETACHSHADERPROC glDetachShader;
extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays; extern PFNGLDRAWBUFFERSPROC glDrawBuffers;
extern PFNGLDETACHSHADERPROC glDetachShader; extern PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
extern PFNGLDRAWBUFFERSPROC glDrawBuffers; extern PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
extern PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex; extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
extern PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray; extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer; extern PFNGLGENBUFFERSPROC glGenBuffers;
extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D; extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
extern PFNGLGENBUFFERSPROC glGenBuffers; extern PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;
extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers; extern PFNGLGENSAMPLERSPROC glGenSamplers;
extern PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines; extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
extern PFNGLGENSAMPLERSPROC glGenSamplers; extern PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv;
extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays; extern PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB;
extern PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv; extern PFNGLGETFRAGDATAINDEXPROC glGetFragDataIndex;
extern PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB; extern PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation;
extern PFNGLGETFRAGDATAINDEXPROC glGetFragDataIndex; extern PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
extern PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation; extern PFNGLGETPROGRAMIVPROC glGetProgramiv;
extern PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog; extern PFNGLGETSHADERIVPROC glGetShaderiv;
extern PFNGLGETPROGRAMIVPROC glGetProgramiv; extern PFNGLGETSTRINGIPROC glGetStringi;
extern PFNGLGETSHADERIVPROC glGetShaderiv; extern PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
extern PFNGLGETSTRINGIPROC glGetStringi; extern PFNGLLINKPROGRAMPROC glLinkProgram;
extern PFNGLISFRAMEBUFFERPROC glIsFramebuffer; extern PFNGLMAPBUFFERPROC glMapBuffer;
extern PFNGLLINKPROGRAMPROC glLinkProgram; extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
extern PFNGLMAPBUFFERPROC glMapBuffer; extern PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange; extern PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
extern PFNGLPROGRAMPARAMETERIPROC glProgramParameteri; extern PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
extern PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf; extern PFNGLSHADERSOURCEPROC glShaderSource;
extern PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri; extern PFNGLUNIFORM1IPROC glUniform1i;
extern PFNGLSHADERSOURCEPROC glShaderSource; extern PFNGLUNMAPBUFFERPROC glUnmapBuffer;
extern PFNGLUNIFORM1IPROC glUniform1i; extern PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
extern PFNGLUNMAPBUFFERPROC glUnmapBuffer; extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
extern PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages; extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
namespace GLLoader { namespace GLLoader {
bool check_gl_version(uint32 major, uint32 minor); bool check_gl_version(uint32 major, uint32 minor);

View File

@ -460,7 +460,7 @@ EXPORT_C GSreadFIFO(uint8* mem)
#ifdef ENABLE_OGL_MT_HACK #ifdef ENABLE_OGL_MT_HACK
// FIXME: double check which thread call this function // FIXME: double check which thread call this function
// See fifo2 issue below // See fifo2 issue below
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
if (theApp.GetConfig("renderer", 0) / 3 == 4) fprintf(stderr, "Disable FIFO1 on opengl\n"); if (theApp.GetConfig("renderer", 0) / 3 == 4) fprintf(stderr, "Disable FIFO1 on opengl\n");
#endif #endif
s_gs->m_wnd->AttachContext(); s_gs->m_wnd->AttachContext();
@ -484,7 +484,7 @@ EXPORT_C GSreadFIFO2(uint8* mem, uint32 size)
#ifdef ENABLE_OGL_MT_HACK #ifdef ENABLE_OGL_MT_HACK
// FIXME called from EE core thread not MTGS which cause // FIXME called from EE core thread not MTGS which cause
// invalidate data for opengl // invalidate data for opengl
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
if (theApp.GetConfig("renderer", 0) / 3 == 4) fprintf(stderr, "Disable FIFO2(%d) on opengl\n", size); if (theApp.GetConfig("renderer", 0) / 3 == 4) fprintf(stderr, "Disable FIFO2(%d) on opengl\n", size);
#endif #endif
s_gs->m_wnd->AttachContext(); s_gs->m_wnd->AttachContext();

View File

@ -52,7 +52,7 @@ GSDeviceOGL::GSDeviceOGL()
memset(&m_state, 0, sizeof(m_state)); memset(&m_state, 0, sizeof(m_state));
// Reset the debug file // Reset the debug file
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
FILE* f = fopen("Debug.txt","w"); FILE* f = fopen("Debug.txt","w");
fclose(f); fclose(f);
#endif #endif
@ -462,7 +462,7 @@ void GSDeviceOGL::SetVSync(bool enable)
void GSDeviceOGL::Flip() void GSDeviceOGL::Flip()
{ {
// FIXME: disable it when code is working // FIXME: disable it when code is working
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
CheckDebugLog(); CheckDebugLog();
#endif #endif
@ -471,7 +471,7 @@ void GSDeviceOGL::Flip()
#ifdef PRINT_FRAME_NUMBER #ifdef PRINT_FRAME_NUMBER
fprintf(stderr, "Draw %d (Frame %d)\n", g_draw_count, g_frame_count); fprintf(stderr, "Draw %d (Frame %d)\n", g_draw_count, g_frame_count);
#endif #endif
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
if (theApp.GetConfig("debug_ogl_dump", 0) != 0) if (theApp.GetConfig("debug_ogl_dump", 0) != 0)
g_frame_count++; g_frame_count++;
#endif #endif
@ -552,13 +552,13 @@ void GSDeviceOGL::DebugOutput()
void GSDeviceOGL::DrawPrimitive() void GSDeviceOGL::DrawPrimitive()
{ {
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
DebugInput(); DebugInput();
#endif #endif
m_state.vb->DrawPrimitive(); m_state.vb->DrawPrimitive();
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
DebugOutput(); DebugOutput();
g_draw_count++; g_draw_count++;
#endif #endif
@ -566,13 +566,13 @@ void GSDeviceOGL::DrawPrimitive()
void GSDeviceOGL::DrawIndexedPrimitive() void GSDeviceOGL::DrawIndexedPrimitive()
{ {
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
DebugInput(); DebugInput();
#endif #endif
m_state.vb->DrawIndexedPrimitive(); m_state.vb->DrawIndexedPrimitive();
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
DebugOutput(); DebugOutput();
g_draw_count++; g_draw_count++;
#endif #endif
@ -581,13 +581,13 @@ void GSDeviceOGL::DrawIndexedPrimitive()
void GSDeviceOGL::DrawIndexedPrimitive(int offset, int count) void GSDeviceOGL::DrawIndexedPrimitive(int offset, int count)
{ {
ASSERT(offset + count <= m_index.count); ASSERT(offset + count <= m_index.count);
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
DebugInput(); DebugInput();
#endif #endif
m_state.vb->DrawIndexedPrimitive(offset, count); m_state.vb->DrawIndexedPrimitive(offset, count);
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
DebugOutput(); DebugOutput();
g_draw_count++; g_draw_count++;
#endif #endif

View File

@ -81,7 +81,7 @@ class GSBufferOGL {
} }
bool Map(void** pointer, uint32 count ) { bool Map(void** pointer, uint32 count ) {
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
GLint b_size = -1; GLint b_size = -1;
glGetBufferParameteriv(m_target, GL_BUFFER_SIZE, &b_size); glGetBufferParameteriv(m_target, GL_BUFFER_SIZE, &b_size);
@ -114,7 +114,7 @@ class GSBufferOGL {
// Upload the data to the buffer // Upload the data to the buffer
*pointer = (uint8*) glMapBufferRange(m_target, m_stride*m_start, m_stride*m_count, map_flags); *pointer = (uint8*) glMapBufferRange(m_target, m_stride*m_start, m_stride*m_count, map_flags);
//fprintf(stderr, "Map %x from %d to %d\n", *pointer, m_start, m_start+m_count); //fprintf(stderr, "Map %x from %d to %d\n", *pointer, m_start, m_start+m_count);
#ifdef OGL_DEBUG #ifdef ENABLE_OGL_DEBUG
if (*pointer == NULL) { if (*pointer == NULL) {
fprintf(stderr, "CRITICAL ERROR map failed for vb!!!\n"); fprintf(stderr, "CRITICAL ERROR map failed for vb!!!\n");
return false; return false;

View File

@ -39,3 +39,6 @@
//#define DISABLE_DATE //#define DISABLE_DATE
#define ENABLE_OGL_MT_HACK // OpenGL doesn't allow to access the same bound context from multiple threads. This hack changes context binding for GSreadFIFO* access #define ENABLE_OGL_MT_HACK // OpenGL doesn't allow to access the same bound context from multiple threads. This hack changes context binding for GSreadFIFO* access
#ifdef _DEBUG
#define ENABLE_OGL_DEBUG // Create a debug context and check opengl command status. Allow also to dump various textures/states.
#endif

View File

@ -207,10 +207,10 @@ using namespace std;
//#include <ext/hash_map> //#include <ext/hash_map>
//#include <ext/hash_set> //#include <ext/hash_set>
#include <GL/glew.h>
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glx.h> #include <GL/glx.h>
#include <GL/glext.h> #include <GL/glext.h>
#include "GLLoader.h"
//using namespace __gnu_cxx; //using namespace __gnu_cxx;