73 Commits
Author SHA1 Message Date
iMineLink 202fb5fef3 GS: improve haunting ground hw tc hack.
when clearing the render target, also discard all the dirty
rectangles previously marked, to avoid spurious uploads
later.
2022-08-19 10:55:27 +01:00
iMineLink 4992659b46 GS: fix out of bounds access to index buffer. 2022-08-18 20:36:46 +01:00
iMineLink fd49a1e80a GS: preserve target on different format write.
affects hardware texture cache.
2022-06-07 10:49:01 +01:00
iMineLink 6fde585504 gs-hw: remove tales of abyss cu hack.
fixes ghosting when upscaling.
2022-05-22 21:54:11 +02:00
iMineLink c45cc6928d gs-hw-tc: add some assertions on source scale. 2022-05-22 21:54:11 +02:00
iMineLink 110b7df4d5 gs-hw-tc: set scale in missing create source path. 2022-05-22 21:54:11 +02:00
iMineLink 73eea20fcc gs-hw: fix invalid reference to target texture.
if the target texture changes after the source
lookup, correctly propagate the texture update.

fixes tales of abyss fullscreen blur when upscaling.
2022-05-22 21:54:11 +02:00
iMineLink 29ad851a9c gs-ogl: fix depth copy shader in stretch rect. 2022-05-20 01:12:38 +02:00
iMineLink d6f1291c0b GS: skip no output draws. 2022-02-24 10:12:59 +00:00
iMineLink 01079f5162 GS: upscale regardless of PCRTC enabling. 2022-02-24 10:12:59 +00:00
iMineLink 1a2272ad43 GS: partially revert "c1e5e45431863bc206686c49b8fb4fa2775be9a2".
overwrite the target pitch when an overlapping write is detected
with the write pitch itself.
fixes the broken splashscreen in This is Football 2002.
2022-02-07 02:17:19 +00:00
iMineLink fede91a98b GS: update target pitch on frame lookup.
fix Jurassic Park - Operation Genesis loading disk logo.
2022-02-07 01:42:54 +00:00
iMineLink 061fff6f17 cmake: copy resources in build folder. 2022-02-06 16:01:39 +00:00
iMineLink b8188a7954 GS: remove bw equality check in tex in rt.
fixes jak mipmapping.
2022-02-06 04:53:09 +00:00
iMineLink 16cfcad0bf GS: fully support target rescaling in TC, take 2. 2022-02-02 00:21:48 +00:00
iMineLink 32f420dbe5 GS: fix overlap check in hw tc.
Textures can span a single block indeed.
Fixes Jak 3 desert rendering.
2022-01-31 09:39:54 +00:00
iMineLink 6361cd8268 GS: add TextureInsideRt flag to selected games. 2022-01-29 00:03:10 +00:00
iMineLink 0055fcf489 GS: add tex in rt hw hack in GUI. 2022-01-29 00:03:10 +00:00
iMineLink b7899d0c8c GS-hw, TC: search tex in wrapping RT.
Improves Beyond Good & Evil shadow.
2022-01-29 00:03:10 +00:00
iMineLink c1e5e45431 GS-hw, TC: search tex in rt in dirty targets.
Also move any target BW update from InvalidateVideoMem to LookupTarget.
Fixes Indiana Jones map rendering in cutscenes.
2022-01-29 00:03:10 +00:00
iMineLink 44d0966892 GS: improve GSDirtyRect psm conv., add bw field. 2022-01-29 00:03:10 +00:00
iMineLink be0932f538 GS-hw, TC: add some const modifiers. 2022-01-29 00:03:10 +00:00
iMineLink 6cfa740f90 GS-hw: reset RT size on reset. 2022-01-29 00:03:10 +00:00
iMineLink 1bd8ec786b GS-hw, TC: log InvalidateLocalMem calls. 2022-01-29 00:03:10 +00:00
iMineLink 9a276d7289 GS-hw, TC: invalidate targets from LRU to MRU. 2022-01-29 00:03:10 +00:00
iMineLink ac63d41daf GS-hw: lookup source before target.
- this avoids the currently used target to
become the MRU in its cache and correctly keeps
the target used by the previous draw as the MRU
during the lookup source call.
2022-01-29 00:03:10 +00:00
iMineLink bd0a8a642b GS-hw, TC: log LookupSource calls. 2022-01-29 00:03:10 +00:00
iMineLink 3e9b38044f GS-hw, TC: improve tex in rt. 2022-01-29 00:03:10 +00:00
iMineLink 1f851887d9 GS: fix Majokko A-La-Mode 2 palette rendering. 2022-01-23 17:56:46 +00:00
iMineLink 2a2564cf45 GS: fully support target rescaling in TC.
Also avoid redundant clears when the target
is going to be completely drawn when rescaling.
2022-01-23 17:56:46 +00:00
iMineLink 4c167cf528 GS: remove redundant clears from tc. 2022-01-17 20:02:16 +01:00
iMineLink 7d27b675d0 GS: sparse targets need to be cleared on fetch. 2022-01-17 20:02:16 +01:00
iMineLink 8db0b52821 GS: optimize xxHash usage in palette hashing. 2022-01-16 11:54:58 +00:00
iMineLink 42066ecaba GS: use xxHash to hash palettes. 2022-01-16 03:28:28 +00:00
iMineLink d5bd187930 GS: fix loopPagesWithBreak last iteration logic. 2022-01-03 14:21:04 +00:00
iMineLink cfc763b488 gitignore: update gs debug gl filename. 2022-01-03 09:45:56 +01:00
iMineLink 7d8377b133 GS-hw: define some consts only in debug mode. 2021-12-13 08:06:52 +01:00
iMineLink 80d3a8a757 GS-hw, TC: don't linearly interpolate downloads.
Greatly improves Burnout games clouds rendering
with even (x2, x4, ...) upscaling factors.
2021-12-13 08:06:52 +01:00
iMineLink 2e6c5cde29 GS-hw: rework surface fetching.
Factorized code.
Always clear render targets and depth stencils
when being fetched.
"force_texture_clear" OGL only config removed.
2021-12-13 08:06:52 +01:00
iMineLink 0f2768dca4 GS-hw, TC: improve LookupTarget.
allow propagation of increased target size and
correct the rescaling.
2021-12-13 08:06:52 +01:00
iMineLink d5be095482 GS-hw: fix burnout black sky and no clouds.
Achieved with a combination of OI+OO hacks that operate
during level loading to consolidate the rendering results
in the GS local memory.

* OI_BurnoutGames to perform small draws directly in local memory:
** improved OI_PointListPalette to draw clouds CLUT,
** improved SwSpriteRender to draw sky texture;
* OO_BurnoutGames used to download clouds texture from GPU.
2021-12-13 08:06:52 +01:00
iMineLink b315625a94 GS-hw: resize rt and ds before draw if necessary. 2021-12-13 08:06:52 +01:00
iMineLink 6b51462fa0 GS-hw: use CanUpscale to check for upscaling. 2021-12-13 08:06:52 +01:00
iMineLink 373e698545 GS-hw, TC: fix tex scaling for native res draws.
The GSTextureCache::ScaleTexture method did not work
correctly when an old texture with a scale factor
different from 1 was recycled for a draw which was forced at
native resolution (the old scale factor was kept).
2021-12-13 08:06:52 +01:00
iMineLink 3b309c6d4e GS: dump alpha channel too. 2021-12-13 08:06:52 +01:00
iMineLink 1426dc1fc5 GSdx-hw: use CanUseSwSpriteRender in OI_JakGames. (#3463)
In GSRendererHW, reuse the method CanUseSwSpriteRender for OI_JakGames.

As in current master, 16x16 "flat" sprite draws are performed via CPU: those are palette rendering better emulated with the SwSpriteRender.

Jak games do also many 64x64 "flat" draws, but mostly for render to texture effects that are already correctly emulated in the TC, so those draws are not done via CPU (as on the contrary happens for DBZ BT games).
2020-06-20 20:22:27 +02:00
iMineLink e2c472baa9 GSdx-hw, TC: invalidate Source w overlapping draw. (#3131)
Improve texture cache Source objects invalidation logic taking into account overlapping with current draw.
Fixes eyes rendering for the Major in Jak 1.
2020-06-19 21:36:19 +02:00
Alessandro Vetere ca9e876241 GSdx-hw: use SSR in DBZBT3.
Closes #2001.
2020-06-16 22:28:51 +02:00
Alessandro Vetere d05b31e91c GSdx-hw: get rid of some VS warnings. 2020-06-15 22:52:26 +02:00
Alessandro Vetere 60e8d40492 GSdx-hw: DBZBT2, remove OO & CU, add OI.
Use SwSpriteRender to render sprites, which:
- fixes kaioken effect,
- fixes character outlines when upscaling,
- reduces frametime by up to 3ms with big upscaling factors.
2020-06-15 22:52:26 +02:00
Alessandro Vetere e71380b82c GSdx-hw: DBZBT2, remove GSC. 2020-06-15 22:52:26 +02:00
Alessandro Vetere fb3eaa9eff GSdx-hw: add CanUseSwSpriteRender method. 2020-06-15 22:52:26 +02:00
Alessandro Vetere ff4ba6712c GSdx-hw: SwSpriteRender, improve no raster check. 2020-06-15 22:52:26 +02:00
Alessandro Vetere c164769eec GSdx-hw: SwSpriteRender, use m_r, correct assert. 2020-06-15 22:52:26 +02:00
Alessandro Vetere 9b73c0eeec GSdx-hw: use PRIM enums in SwSpriteRender. 2020-06-15 22:52:26 +02:00
Alessandro Vetere cd0a6f05a0 GSdx-hw: SwSpriteRender, implement TEX0.TFX=1. 2020-06-15 22:52:26 +02:00
Alessandro Vetere f2dd92b5f8 GSRendererHW: SwSpriteRender, fix FBMSK. 2020-06-15 22:52:26 +02:00
Alessandro Vetere 09116d8964 GSdx-hw: SwSpriteRender, implement all ALPHA.C. 2020-06-15 22:52:26 +02:00
Alessandro Vetere 6feb59fef5 GSdx-hw OGL: log if tex size gt PBO segment size.
Texture data may be corrupted in this case due to missing
fences synchronization.
2019-08-19 23:13:56 +02:00
Alessandro Vetere 63982bf6b7 GSdx-hw OGL: fix PBO pool map size.
Round up mapping size for alignment before computing
wrapped pointer.
Avoids memcpy after end of PBO buffer.
2019-08-19 23:13:56 +02:00
Alessandro Vetere 9e687895e1 GSdx-hw TC: improve search tex in RT
Fixes eyes rendering in Jak games both ingame and in cutscenes.
Previous method yielded no eyes in Jak 2/3/X cutscenes.

- Generalized offset search logic with caching system (works for BW > 1
and any PSM, limited to PSMCT32 for now)
- CRC Flags mechanism for default behavior enabling in Jak games
2019-08-14 17:09:51 +02:00
Alessandro Vetere 7c42928b57 GSdx-hw TC: invalidate Source with Target TEX0
Fixes eyes blinking in Jak games with tex in rt search
enabled.

- Target TEX0 in Source is Source TEX0 if the Source is
not build from Target, otherwise it is the Target TEX0,
allowing improved Source invalidation
2019-08-14 17:09:51 +02:00
Alessandro Vetere 68cfc5d953 GSdx-hw TC: fix Target::Inside check
- inclusion shall not be strict only on start side
2019-08-14 17:09:51 +02:00
Alessandro Vetere 2007894ba6 GSdx-hw TC: fix end block computations
- compute bottom right texel block as last valid block
2019-08-14 17:09:51 +02:00
Alessandro Vetere dfa4680547 GSdx-hw: SwSpriteRender, fix drawing region 2019-08-14 16:18:39 +02:00
Alessandro Vetere 1f6b44d556 GSdx-hw: SwSpriteRender, improve no rast. check 2019-08-14 16:18:39 +02:00
iMineLink f409079864 GSdx-hw: New SW sprite renderer, used in Jak games only for now. (#3001)
Developed a new SW sprite render function, which is used to fix
Jak and Daxter colors in Jak games and to remove the old Jak games hack
which yielded wrong colors and clashed with TC search texture in RT function.

- Remove OO_JakGames hack for palette readback from framebuffer (slow,
clashes with texture in RT TC function, clashes with Target readback logic)
- Developed new method SwSpriteRender with CPU rendering logic
- Add OI_JakGames method using SwSpriteRender for CPU palette rendering (fast,
does not clash with texture in RT TC function, no readback required)

Bonus: fps also sees an improvement in Jak games 3-5 increase.
2019-07-13 01:05:27 +02:00
Alessandro Vetere ba2efec983 GsDumpFinder: fix error when dir not found 2019-06-29 16:14:28 +05:30
Alessandro Vetere 61b984a6c1 BuildParameters.cmake: fix typo 2019-06-18 21:28:57 +02:00
iMineLink 8ff0249213 GSVector4i: Fix compare64 function.
Fix GSVector4i::compare64 function by adjusting the number of iterations
needed to cover the comparison of all the elements of the input arrays,
where the number of bytes to compare is indicated in the size parameter
of the function.
The function is used only in GSdx-TC to compare CLUT arrays.
On one hand this fix closes the recent #2706 and possibly the color
regressions indicated in #2702 (which were both introduced with the new
PaletteMap mechanism, which partially replaced the GSVector4i::update
logic with the bugged GSVector4i::compare64).
On the other hand this might impact long standing wrong texture cache
lookup when palette was involved with 8-bit palette disabled (to be
verified which ones).

Close #2713
Fixes #2706
Fixes #2715
2018-11-26 10:01:10 +01:00
iMineLink 42aee34482 GSdx-TC: Use PaletteMap also when 8-bit texture is disabled by caching only clut copies. (#2681)
Enabled caching of clut copies with PaletteMap also in the case 8-bit texture is disabled, which is the default (on #2344 the caching of clut copies and palette textures was done only when 8-bit texture was enabled).
Brings moderate speedups ~10% in the most concitated parts of the ZoE2 Anubis benchmark, but may improve performance in all the cases when there are many Source objects created with clut copies to be stored.
The quality of the comments has been improved to better highlight the mechanics of the caching system.
2018-11-13 19:22:13 +01:00
iMineLink 292dbbb6ac GSdx-TC: Remove virtual specifier from PaletteKeyHash operator, PaletteKeyEqual operator and Palette destructor. (#2680)
Small follow up corrections from #2344 highlighted by @turtleli
2018-11-10 18:50:19 +01:00
iMineLink 9fa1b290ba GSdx-TC: Palette management rework. (#2344)
This follows the 4th point of #2310.
The idea was to rework the current palette texture management to improve performances with games that uses multiple palettes for the same data texture.

The new management shows small to none performances improvement in almost every game in terms of FPS, and it lowers the GPU BUS usage by some percentage points in games like Baldur's Gate: Dark Alliance (9% to 7%) which uses many palettes.

The hot topic is that the performances in Zone Of The Enders 2 skyrocketed (2x), because of the fact that the game uses many palettes and a small number of textures to render it's effects.

For more detailed information check the PR  #2344
2018-11-04 22:06:24 +01:00