diff --git a/plugins/zzogl-pg/opengl/Mem.cpp b/plugins/zzogl-pg/opengl/Mem.cpp index f5541df977..82a46bab47 100644 --- a/plugins/zzogl-pg/opengl/Mem.cpp +++ b/plugins/zzogl-pg/opengl/Mem.cpp @@ -243,8 +243,6 @@ void TransferLocalHost16SZ(void* pbyMem, u32 nQWordSize) {FUNCLOG} void fill_block(BLOCK b, vector& vBlockData, vector& vBilinearData, int floatfmt) { - assert( sizeof(b.pageTable) == b.width * b.height * sizeof(b.pageTable[0][0]) ); - float* psrcf = (float*)&vBlockData[0] + b.ox + b.oy * BLOCK_TEXWIDTH; u16* psrcw = NULL; if (!floatfmt) diff --git a/plugins/zzogl-pg/opengl/Mem.h b/plugins/zzogl-pg/opengl/Mem.h index bd96113ad2..d148db5b01 100644 --- a/plugins/zzogl-pg/opengl/Mem.h +++ b/plugins/zzogl-pg/opengl/Mem.h @@ -170,41 +170,49 @@ struct BLOCK { switch (psm) { case PSMCT32: + assert( sizeof(g_pageTable32) == width * height * sizeof(g_pageTable32[0][0]) ); pageTable = &g_pageTable32[0][0]; blockTable = &g_blockTable32[0][0]; columnTable = &g_columnTable32[0][0]; break; case PSMT32Z: + assert( sizeof(g_pageTable32Z) == width * height * sizeof(g_pageTable32Z[0][0]) ); pageTable = &g_pageTable32Z[0][0]; blockTable = &g_blockTable32Z[0][0]; columnTable = &g_columnTable32[0][0]; break; case PSMCT16: + assert( sizeof(g_pageTable16) == width * height * sizeof(g_pageTable16[0][0]) ); pageTable = &g_pageTable16[0][0]; blockTable = &g_blockTable16[0][0]; columnTable = &g_columnTable16[0][0]; break; case PSMCT16S: + assert( sizeof(g_pageTable16S) == width * height * sizeof(g_pageTable16S[0][0]) ); pageTable = &g_pageTable16S[0][0]; blockTable = &g_blockTable16S[0][0]; columnTable = &g_columnTable16[0][0]; break; case PSMT16Z: + assert( sizeof(g_pageTable16Z) == width * height * sizeof(g_pageTable16Z[0][0]) ); pageTable = &g_pageTable16Z[0][0]; blockTable = &g_blockTable16Z[0][0]; columnTable = &g_columnTable16[0][0]; break; case PSMT16SZ: + assert( sizeof(g_pageTable16SZ) == width * height * sizeof(g_pageTable16SZ[0][0]) ); pageTable = &g_pageTable16SZ[0][0]; blockTable = &g_blockTable16SZ[0][0]; columnTable = &g_columnTable16[0][0]; break; case PSMT8: + assert( sizeof(g_pageTable8) == width * height * sizeof(g_pageTable8[0][0]) ); pageTable = &g_pageTable8[0][0]; blockTable = &g_blockTable8[0][0]; columnTable = &g_columnTable8[0][0]; break; case PSMT4: + assert( sizeof(g_pageTable4) == width * height * sizeof(g_pageTable4[0][0]) ); pageTable = &g_pageTable4[0][0]; blockTable = &g_blockTable4[0][0]; columnTable = &g_columnTable4[0][0]; diff --git a/plugins/zzogl-pg/opengl/ZZoglCreate.cpp b/plugins/zzogl-pg/opengl/ZZoglCreate.cpp index 14c903fdae..736ecb80b8 100644 --- a/plugins/zzogl-pg/opengl/ZZoglCreate.cpp +++ b/plugins/zzogl-pg/opengl/ZZoglCreate.cpp @@ -75,8 +75,6 @@ map mapGLExtensions; namespace ZeroGS { -RenderFormatType g_RenderFormatType = RFT_float16; - extern void KickPoint(); extern void KickLine(); extern void KickTriangle(); @@ -271,19 +269,6 @@ inline void ZeroGS::CreateOtherCheck() if (Max_Texture_Size_NV < 1024) ZZLog::Error_Log("Could not properly make bitmasks, so some textures will be missed."); - /* Zeydlitz: we don't support 128-bit targets yet. they are slow and weirdo - if( conf.settings() & GAME_32BITTARGS ) { - g_RenderFormatType = RFT_byte8; - ZZLog::Error_Log("Setting 32 bit render target."); - } - else { - if( !IsGLExt("GL_NV_float_buffer") && !IsGLExt("GL_ARB_color_buffer_float") && !IsGLExt("ATI_pixel_format_float") ) { - ZZLog::Error_Log("******\nZZogl: GS WARNING: Floating point render targets not supported, switching to 32bit\nZZogl: *********"); - g_RenderFormatType = RFT_byte8; - } - }*/ - g_RenderFormatType = RFT_byte8; - #ifdef _WIN32 if (IsGLExt("WGL_EXT_swap_control") || IsGLExt("EXT_swap_control")) wglSwapIntervalEXT(0); @@ -470,8 +455,6 @@ bool ZeroGS::Create(int _width, int _height) Destroy(1); GSStateReset(); - g_RenderFormatType = RFT_float16; - if (!Create_Window(_width, _height)) return false; if (!CreateFillExtensionsMap()) return false; if (!CreateImportantCheck()) return false; diff --git a/plugins/zzogl-pg/opengl/ZZoglFlush.cpp b/plugins/zzogl-pg/opengl/ZZoglFlush.cpp index b9aee62bb1..c47b4cc2d0 100644 --- a/plugins/zzogl-pg/opengl/ZZoglFlush.cpp +++ b/plugins/zzogl-pg/opengl/ZZoglFlush.cpp @@ -207,8 +207,6 @@ int icurctx = -1; extern CRangeManager s_RangeMngr; // manages overwritten memory // zz void FlushTransferRanges(const tex0Info* ptex); //zz -RenderFormatType GetRenderFormat() { return g_RenderFormatType; } //zz - // use to update the state void SetTexVariables(int context, FRAGMENTSHADER* pfragment); // zz void SetTexInt(int context, FRAGMENTSHADER* pfragment, int settexint); // zz @@ -1468,66 +1466,6 @@ inline void AlphaSaveTarget(VB& curvb) #endif } -inline void AlphaColorClamping(VB& curvb, const pixTest curtest) -{ - // clamp the final colors, when enabled ffx2 credits mess up - //if (gs.colclamp) ZZLog::Error_Log("ColClamp!"); - if ((curvb.curprim.abe && bAlphaClamping) && (GetRenderFormat() != RFT_byte8) && !(conf.settings().no_color_clamp)) // if !colclamp, skip - { - //ZZLog::Error_Log("Clamped."); - ResetAlphaVariables(); - - // if processing the clamping case, make sure can write to the front buffer - glDisable(GL_STENCIL_TEST); - glEnable(GL_BLEND); - glDisable(GL_ALPHA_TEST); - glDisable(GL_DEPTH_TEST); - glDepthMask(0); - glColorMask(1, 1, 1, 0); - - if (s_bWriteDepth) ResetRenderTarget(1); - - SetShaderCaller("AlphaColorClamping"); - - ZZshSetPixelShader(ppsOne.prog); - GL_BLEND_RGB(GL_ONE, GL_ONE); - - float f; - - if (bAlphaClamping & 1) // min - { - f = 0; - ZZshSetParameter4fv(ppsOne.sOneColor, &f, "g_fOneColor"); - GL_BLENDEQ_RGB(GL_MAX_EXT); - Draw(curvb); - } - - // bios shows white screen - if (bAlphaClamping & 2) // max - { - f = 1; - ZZshSetParameter4fv(ppsOne.sOneColor, &f, "g_fOneColor"); - GL_BLENDEQ_RGB(GL_MIN_EXT); - Draw(curvb); - } - - if (!curvb.zbuf.zmsk) - { - glDepthMask(1); - - if (s_bWriteDepth) - { - assert(curvb.pdepth != NULL); - curvb.pdepth->SetRenderTarget(1); - } - } - - if (curvb.test.ate && USEALPHATESTING) glEnable(GL_ALPHA_TEST); - - GL_ZTEST(curtest.zte); - } -} - inline void FlushUndoFiter(u32 dwFilterOpts) { if (dwFilterOpts) @@ -1585,7 +1523,6 @@ void ZeroGS::Flush(int context) GL_REPORT_ERRORD(); - AlphaColorClamping(curvb, curtest); FlushUndoFiter(dwFilterOpts); ppf += curvb.nCount + 0x100000; diff --git a/plugins/zzogl-pg/opengl/targets.cpp b/plugins/zzogl-pg/opengl/targets.cpp index 7126ab619d..de35d18ca6 100644 --- a/plugins/zzogl-pg/opengl/targets.cpp +++ b/plugins/zzogl-pg/opengl/targets.cpp @@ -61,7 +61,7 @@ u32 TEXDESTROY_THRESH = 16; // memory size for one row of texture. It depends on width of texture and number of bytes // per pixel -inline u32 Pitch(int fbw) { return (RW(fbw) * (GetRenderFormat() == RFT_float16 ? 8 : 4)) ; } +inline u32 Pitch(int fbw) { return (RW(fbw) * 4) ; } // memory size of whole texture. It is number of rows multiplied by memory size of row inline u32 Tex_Memory_Size(int fbw, int fbh) { return (RH(fbh) * Pitch(fbw)); } @@ -94,8 +94,7 @@ inline bool ZeroGS::CRenderTarget::InitialiseDefaultTexture(u32 *ptr_p, int fbw, glBindTexture(GL_TEXTURE_RECTANGLE_NV, *ptr_p); // initialize to default - GLenum texType = (GetRenderFormat() == RFT_float16) ? GL_FLOAT : GL_UNSIGNED_BYTE; - TextureRect(GetRenderTargetFormat(), fbw, fbh, GL_RGBA, texType, NULL); + TextureRect(4, fbw, fbh, GL_RGBA, GL_UNSIGNED_BYTE, NULL); setRectWrap(GL_CLAMP); setRectFilters(GL_LINEAR); @@ -3006,73 +3005,38 @@ void _Resolve(const void* psrc, int fbp, int fbw, int fbh, int psm, u32 fbm, boo // note that fbp is always aligned on page boundaries GetRectMemAddress(start, end, psm, 0, 0, fbw, fbh, fbp, fbw); - if (GetRenderFormat() == RFT_byte8) - { - // start the conversion process A8R8G8B8 -> psm - switch (psm) - { + // start the conversion process A8R8G8B8 -> psm + switch (psm) + { - // NOTE pass psm as a constant value otherwise gcc does not do its job. It keep - // the psm switch in Resolve_32_Bit - case PSMCT32: - case PSMCT24: - Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMCT32, fbm); - break; + // NOTE pass psm as a constant value otherwise gcc does not do its job. It keep + // the psm switch in Resolve_32_Bit + case PSMCT32: + case PSMCT24: + Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMCT32, fbm); + break; - case PSMCT16: - Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMCT16, fbm); - break; + case PSMCT16: + Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMCT16, fbm); + break; - case PSMCT16S: - Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMCT16S, fbm); - break; + case PSMCT16S: + Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMCT16S, fbm); + break; - case PSMT32Z: - case PSMT24Z: - Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMT32Z, fbm); - break; + case PSMT32Z: + case PSMT24Z: + Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMT32Z, fbm); + break; - case PSMT16Z: - Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMT16Z, fbm); - break; + case PSMT16Z: + Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMT16Z, fbm); + break; - case PSMT16SZ: - Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMT16SZ, fbm); - break; - } - } - else // float16 - { - switch (psm) - { - - case PSMCT32: - case PSMCT24: - RESOLVE_32_BIT(32, u32, Vector_16F, Float16ToARGB); - break; - - case PSMCT16: - RESOLVE_32_BIT(16, u16, Vector_16F, Float16ToARGB16); - break; - - case PSMCT16S: - RESOLVE_32_BIT(16S, u16, Vector_16F, Float16ToARGB16); - break; - - case PSMT32Z: - case PSMT24Z: - RESOLVE_32_BIT(32Z, u32, Vector_16F, Float16ToARGB_Z); - break; - - case PSMT16Z: - RESOLVE_32_BIT(16Z, u16, Vector_16F, Float16ToARGB16_Z); - break; - - case PSMT16SZ: - RESOLVE_32_BIT(16SZ, u16, Vector_16F, Float16ToARGB16_Z); - break; - } - } + case PSMT16SZ: + Resolve_32_Bit(psrc, fbp, fbw, fbh, PSMT16SZ, fbm); + break; + } g_MemTargs.ClearRange(start, end); diff --git a/plugins/zzogl-pg/opengl/zerogs.cpp b/plugins/zzogl-pg/opengl/zerogs.cpp index f00e5bb48f..266ab1adac 100644 --- a/plugins/zzogl-pg/opengl/zerogs.cpp +++ b/plugins/zzogl-pg/opengl/zerogs.cpp @@ -100,7 +100,6 @@ Vector g_vdepth, vlogz; // Vector g_vdepth = Vector( 65536.0f*65536.0f, 256.0f*65536.0f, 65536.0f, 256.0f); extern CRangeManager s_RangeMngr; // manages overwritten memory -GLenum GetRenderTargetFormat() { return GetRenderFormat() == RFT_byte8 ? 4 : g_internalRGBAFloat16Fmt; } // returns the first and last addresses aligned to a page that cover void GetRectMemAddress(int& start, int& end, int psm, int x, int y, int w, int h, int bp, int bw); diff --git a/plugins/zzogl-pg/opengl/zerogs.h b/plugins/zzogl-pg/opengl/zerogs.h index f8fcd2366c..b0a106605b 100644 --- a/plugins/zzogl-pg/opengl/zerogs.h +++ b/plugins/zzogl-pg/opengl/zerogs.h @@ -412,7 +412,6 @@ extern float fiTexWidth[2], fiTexHeight[2]; // current tex width and height extern vector g_vboBuffers; // VBOs for all drawing commands extern GLuint vboRect; extern int g_nCurVBOIndex; -extern RenderFormatType g_RenderFormatType; void AddMessage(const char* pstr, u32 ms = 5000); void DrawText(const char* pstr, int left, int top, u32 color); @@ -476,8 +475,6 @@ bool CheckChangeInClut(u32 highdword, u32 psm); // returns true if clut will cha // call to load CLUT data (depending on CLD) void texClutWrite(int ctx); -RenderFormatType GetRenderFormat(); -GLenum GetRenderTargetFormat(); int Save(s8* pbydata); bool Load(s8* pbydata);