From 841e326e0c76f3034cb24a9ee07051c2c66795d2 Mon Sep 17 00:00:00 2001 From: arcum42 Date: Sat, 3 Jul 2010 06:34:27 +0000 Subject: [PATCH] zzogl-pg: Shuffle stuff out of zerogs.h to ZZGl.h and Util.h. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3377 96395faa-99c1-11dd-bbfe-3dabce05a288 --- plugins/zzogl-pg/opengl/Util.h | 18 +++ plugins/zzogl-pg/opengl/ZZGl.h | 180 ++++++++++++++++++++++++++ plugins/zzogl-pg/opengl/zerogs.h | 210 +------------------------------ 3 files changed, 199 insertions(+), 209 deletions(-) diff --git a/plugins/zzogl-pg/opengl/Util.h b/plugins/zzogl-pg/opengl/Util.h index c61622483e..3d1566907f 100644 --- a/plugins/zzogl-pg/opengl/Util.h +++ b/plugins/zzogl-pg/opengl/Util.h @@ -248,6 +248,8 @@ typedef struct } GSconf; extern GSconf conf; +// ----------------------- Defines + #define REG64(name) \ union name \ { \ @@ -282,6 +284,22 @@ union name \ #define REG_SET_END }; +#ifndef SAFE_DELETE +# define SAFE_DELETE(x) if( (x) != NULL ) { delete (x); (x) = NULL; } +#endif +#ifndef SAFE_DELETE_ARRAY +# define SAFE_DELETE_ARRAY(x) if( (x) != NULL ) { delete[] (x); (x) = NULL; } +#endif +#ifndef SAFE_RELEASE +# define SAFE_RELEASE(x) if( (x) != NULL ) { (x)->Release(); (x) = NULL; } +#endif + +#define FORIT(it, v) for(it = (v).begin(); it != (v).end(); ++(it)) + +#ifndef ARRAY_SIZE +# define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) +#endif + extern void LoadConfig(); extern void SaveConfig(); diff --git a/plugins/zzogl-pg/opengl/ZZGl.h b/plugins/zzogl-pg/opengl/ZZGl.h index 6d242dcbed..4eb205214d 100644 --- a/plugins/zzogl-pg/opengl/ZZGl.h +++ b/plugins/zzogl-pg/opengl/ZZGl.h @@ -29,6 +29,186 @@ inline void* wglGetProcAddress(const char* x) #include #include +#include +#include "zerogsmath.h" + +// Defines + +#ifndef GL_DEPTH24_STENCIL8_EXT // allows FBOs to support stencils +# define GL_DEPTH_STENCIL_EXT 0x84F9 +# define GL_UNSIGNED_INT_24_8_EXT 0x84FA +# define GL_DEPTH24_STENCIL8_EXT 0x88F0 +# define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#endif + +#define GL_STENCILFUNC(func, ref, mask) { \ + s_stencilfunc = func; \ + s_stencilref = ref; \ + s_stencilmask = mask; \ + glStencilFunc(func, ref, mask); \ +} + +#define GL_STENCILFUNC_SET() glStencilFunc(s_stencilfunc, s_stencilref, s_stencilmask) + + +// sets the data stream +#define SET_STREAM() { \ + glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(VertexGPU), (void*)8); \ + glSecondaryColorPointerEXT(4, GL_UNSIGNED_BYTE, sizeof(VertexGPU), (void*)12); \ + glTexCoordPointer(3, GL_FLOAT, sizeof(VertexGPU), (void*)16); \ + glVertexPointer(4, GL_SHORT, sizeof(VertexGPU), (void*)0); \ +} + +extern const char* ShaderCallerName; +extern const char* ShaderHandleName; + +inline void SetShaderCaller(const char* Name) +{ + ShaderCallerName = Name; +} + +inline void SetHandleName(const char* Name) +{ + ShaderHandleName = Name; +} + +extern void HandleCgError(CGcontext ctx, CGerror err, void* appdata); +extern void ZZcgSetParameter4fv(CGparameter param, const float* v, const char* name); + +#define SETVERTEXSHADER(prog) { \ + if( (prog) != g_vsprog ) { \ + cgGLBindProgram(prog); \ + g_vsprog = prog; \ + } \ +} \ + +#define SETPIXELSHADER(prog) { \ + if( (prog) != g_psprog ) { \ + cgGLBindProgram(prog); \ + g_psprog = prog; \ + } \ +} \ + + +#define SAFE_RELEASE_PROG(x) { if( (x) != NULL ) { cgDestroyProgram(x); x = NULL; } } +#define SAFE_RELEASE_TEX(x) { if( (x) != 0 ) { glDeleteTextures(1, &(x)); x = 0; } } + +// inline for an extremely often used sequence +// This is turning off all gl functions. Safe to do updates. +inline void DisableAllgl() +{ + glDisable(GL_SCISSOR_TEST); + glDisable(GL_BLEND); + glDisable(GL_ALPHA_TEST); + glDisable(GL_DEPTH_TEST); + glDepthMask(0); + glDisable(GL_STENCIL_TEST); + glColorMask(1, 1, 1, 1); +} + + +//--------------------- Dummies + +#ifdef _WIN32 +extern void (__stdcall *zgsBlendEquationSeparateEXT)(GLenum, GLenum); +extern void (__stdcall *zgsBlendFuncSeparateEXT)(GLenum, GLenum, GLenum, GLenum); +#else +extern void (APIENTRY *zgsBlendEquationSeparateEXT)(GLenum, GLenum); +extern void (APIENTRY *zgsBlendFuncSeparateEXT)(GLenum, GLenum, GLenum, GLenum); +#endif + + +// ------------------------ Types ------------------------- + +struct FRAGMENTSHADER +{ + FRAGMENTSHADER() : prog(0), sMemory(0), sFinal(0), sBitwiseANDX(0), sBitwiseANDY(0), sInterlace(0), sCLUT(0), sOneColor(0), sBitBltZ(0), + fTexAlpha2(0), fTexOffset(0), fTexDims(0), fTexBlock(0), fClampExts(0), fTexWrapMode(0), + fRealTexDims(0), fTestBlack(0), fPageOffset(0), fTexAlpha(0) {} + + CGprogram prog; + CGparameter sMemory, sFinal, sBitwiseANDX, sBitwiseANDY, sInterlace, sCLUT; + CGparameter sOneColor, sBitBltZ, sInvTexDims; + CGparameter fTexAlpha2, fTexOffset, fTexDims, fTexBlock, fClampExts, fTexWrapMode, fRealTexDims, fTestBlack, fPageOffset, fTexAlpha; + + void set_uniform_param(CGparameter &var, const char *name) + { + CGparameter p; + p = cgGetNamedParameter(prog, name); + + if (p != NULL && cgIsParameterUsed(p, prog) == CG_TRUE) var = p; + } + + bool set_texture(GLuint texobj, const char *name) + { + CGparameter p; + + p = cgGetNamedParameter(prog, name); + + if (p != NULL && cgIsParameterUsed(p, prog) == CG_TRUE) + { + cgGLSetTextureParameter(p, texobj); + cgGLEnableTextureParameter(p); + return true; + } + + return false; + } + + bool connect(CGparameter &tex, const char *name) + { + CGparameter p; + + p = cgGetNamedParameter(prog, name); + + if (p != NULL && cgIsParameterUsed(p, prog) == CG_TRUE) + { + cgConnectParameter(tex, p); + return true; + } + + return false; + } + + bool set_texture(CGparameter &tex, const char *name) + { + CGparameter p; + + p = cgGetNamedParameter(prog, name); + + if (p != NULL && cgIsParameterUsed(p, prog) == CG_TRUE) + { + //cgGLEnableTextureParameter(p); + tex = p; + return true; + } + + return false; + } + + bool set_shader_const(Vector v, const char *name) + { + CGparameter p; + + p = cgGetNamedParameter(prog, name); + + if (p != NULL && cgIsParameterUsed(p, prog) == CG_TRUE) + { + cgGLSetParameter4fv(p, v); + return true; + } + + return false; + } +}; + +struct VERTEXSHADER +{ + VERTEXSHADER() : prog(0), sBitBltPos(0), sBitBltTex(0) {} + + CGprogram prog; + CGparameter sBitBltPos, sBitBltTex, fBitBltTrans; // vertex shader constants +}; // GL prototypes extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT; diff --git a/plugins/zzogl-pg/opengl/zerogs.h b/plugins/zzogl-pg/opengl/zerogs.h index a653fa30c4..7fb0ccc8d8 100644 --- a/plugins/zzogl-pg/opengl/zerogs.h +++ b/plugins/zzogl-pg/opengl/zerogs.h @@ -37,100 +37,16 @@ using namespace std; -// ----------------------- Defines -#ifndef GL_DEPTH24_STENCIL8_EXT // allows FBOs to support stencils -# define GL_DEPTH_STENCIL_EXT 0x84F9 -# define GL_UNSIGNED_INT_24_8_EXT 0x84FA -# define GL_DEPTH24_STENCIL8_EXT 0x88F0 -# define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 -#endif -#define GL_STENCILFUNC(func, ref, mask) { \ - s_stencilfunc = func; \ - s_stencilref = ref; \ - s_stencilmask = mask; \ - glStencilFunc(func, ref, mask); \ -} - -#define GL_STENCILFUNC_SET() glStencilFunc(s_stencilfunc, s_stencilref, s_stencilmask) - -#ifndef SAFE_DELETE -# define SAFE_DELETE(x) if( (x) != NULL ) { delete (x); (x) = NULL; } -#endif -#ifndef SAFE_DELETE_ARRAY -# define SAFE_DELETE_ARRAY(x) if( (x) != NULL ) { delete[] (x); (x) = NULL; } -#endif -#ifndef SAFE_RELEASE -# define SAFE_RELEASE(x) if( (x) != NULL ) { (x)->Release(); (x) = NULL; } -#endif - -#define SAFE_RELEASE_PROG(x) { if( (x) != NULL ) { cgDestroyProgram(x); x = NULL; } } -#define SAFE_RELEASE_TEX(x) { if( (x) != 0 ) { glDeleteTextures(1, &(x)); x = 0; } } - -#define FORIT(it, v) for(it = (v).begin(); it != (v).end(); ++(it)) - -// sets the data stream -#define SET_STREAM() { \ - glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(VertexGPU), (void*)8); \ - glSecondaryColorPointerEXT(4, GL_UNSIGNED_BYTE, sizeof(VertexGPU), (void*)12); \ - glTexCoordPointer(3, GL_FLOAT, sizeof(VertexGPU), (void*)16); \ - glVertexPointer(4, GL_SHORT, sizeof(VertexGPU), (void*)0); \ -} - -extern const char* ShaderCallerName; -extern const char* ShaderHandleName; - -inline void SetShaderCaller(const char* Name) -{ - ShaderCallerName = Name; -} - -inline void SetHandleName(const char* Name) -{ - ShaderHandleName = Name; -} - -extern void HandleCgError(CGcontext ctx, CGerror err, void* appdata); -extern void ZZcgSetParameter4fv(CGparameter param, const float* v, const char* name); - -#define SETVERTEXSHADER(prog) { \ - if( (prog) != g_vsprog ) { \ - cgGLBindProgram(prog); \ - g_vsprog = prog; \ - } \ -} \ - -#define SETPIXELSHADER(prog) { \ - if( (prog) != g_psprog ) { \ - cgGLBindProgram(prog); \ - g_psprog = prog; \ - } \ -} \ - -#ifndef ARRAY_SIZE -# define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) -#endif //------------------------ Constants ---------------------- #define VB_BUFFERSIZE 0x400 -// Used in logaripmic Z-test, as (1-o(1))/log(MAX_U32). +// Used in a logarithmic Z-test, as (1-o(1))/log(MAX_U32). const float g_filog32 = 0.999f / (32.0f * logf(2.0f)); //------------------------ Inlines ------------------------- -// inline for an extremely often used sequence -// This is turning off all gl functions. Safe to do updates. -inline void DisableAllgl() -{ - glDisable(GL_SCISSOR_TEST); - glDisable(GL_BLEND); - glDisable(GL_ALPHA_TEST); - glDisable(GL_DEPTH_TEST); - glDepthMask(0); - glDisable(GL_STENCIL_TEST); - glColorMask(1, 1, 1, 1); -} // Calculate maximum height for target inline int get_maxheight(int fbp, int fbw, int psm) @@ -160,110 +76,6 @@ inline u8 GetTexCPSM(const tex0Info& tex) return tex.psm; } -//--------------------- Dummies - -#ifdef _WIN32 -extern void (__stdcall *zgsBlendEquationSeparateEXT)(GLenum, GLenum); -extern void (__stdcall *zgsBlendFuncSeparateEXT)(GLenum, GLenum, GLenum, GLenum); -#else -extern void (APIENTRY *zgsBlendEquationSeparateEXT)(GLenum, GLenum); -extern void (APIENTRY *zgsBlendFuncSeparateEXT)(GLenum, GLenum, GLenum, GLenum); -#endif - -// ------------------------ Types ------------------------- - -struct FRAGMENTSHADER -{ - FRAGMENTSHADER() : prog(0), sMemory(0), sFinal(0), sBitwiseANDX(0), sBitwiseANDY(0), sInterlace(0), sCLUT(0), sOneColor(0), sBitBltZ(0), - fTexAlpha2(0), fTexOffset(0), fTexDims(0), fTexBlock(0), fClampExts(0), fTexWrapMode(0), - fRealTexDims(0), fTestBlack(0), fPageOffset(0), fTexAlpha(0) {} - - CGprogram prog; - CGparameter sMemory, sFinal, sBitwiseANDX, sBitwiseANDY, sInterlace, sCLUT; - CGparameter sOneColor, sBitBltZ, sInvTexDims; - CGparameter fTexAlpha2, fTexOffset, fTexDims, fTexBlock, fClampExts, fTexWrapMode, fRealTexDims, fTestBlack, fPageOffset, fTexAlpha; - -#ifdef _DEBUG - string filename; -#endif - void set_uniform_param(CGparameter &var, const char *name) - { - CGparameter p; - p = cgGetNamedParameter(prog, name); - - if (p != NULL && cgIsParameterUsed(p, prog) == CG_TRUE) var = p; - } - - bool set_texture(GLuint texobj, const char *name) - { - CGparameter p; - - p = cgGetNamedParameter(prog, name); - - if (p != NULL && cgIsParameterUsed(p, prog) == CG_TRUE) - { - cgGLSetTextureParameter(p, texobj); - cgGLEnableTextureParameter(p); - return true; - } - - return false; - } - - bool connect(CGparameter &tex, const char *name) - { - CGparameter p; - - p = cgGetNamedParameter(prog, name); - - if (p != NULL && cgIsParameterUsed(p, prog) == CG_TRUE) - { - cgConnectParameter(tex, p); - return true; - } - - return false; - } - - bool set_texture(CGparameter &tex, const char *name) - { - CGparameter p; - - p = cgGetNamedParameter(prog, name); - - if (p != NULL && cgIsParameterUsed(p, prog) == CG_TRUE) - { - //cgGLEnableTextureParameter(p); - tex = p; - return true; - } - - return false; - } - - bool set_shader_const(Vector v, const char *name) - { - CGparameter p; - - p = cgGetNamedParameter(prog, name); - - if (p != NULL && cgIsParameterUsed(p, prog) == CG_TRUE) - { - cgGLSetParameter4fv(p, v); - return true; - } - - return false; - } -}; - -struct VERTEXSHADER -{ - VERTEXSHADER() : prog(0), sBitBltPos(0), sBitBltTex(0) {} - - CGprogram prog; - CGparameter sBitBltPos, sBitBltTex, fBitBltTrans; // vertex shader constants -}; // ------------------------ Variables ------------------------- // all textures have this width @@ -810,24 +622,4 @@ inline void CluttingForFlushedTex(tex0Info* tex0, u32 Data, int ictx) } }; -//// GL prototypes -//extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT; -//extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT; -//extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT; -//extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT; -//extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT; -//extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT; -//extern PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT; -//extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT; -//extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT; -//extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT; -//extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT; -//extern PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT; -//extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT; -//extern PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT; -//extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT; -//extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT; -//extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT; -//extern PFNGLDRAWBUFFERSPROC glDrawBuffers; - #endif