Commit Graph

336 Commits

Author SHA1 Message Date
Gregory Hainaut adb8be3287 gsdx: add/update comment
Need to investigate why the number of vertex is different in upscaled resolution
2016-09-28 19:41:12 +02:00
Gregory Hainaut 749037346c gsdx: report an error if PSM is invalid 2016-09-28 19:41:12 +02:00
Gregory Hainaut 97172f5e51 gsdx debug: count draw call in a different way
* Always do +1 before the draw call
* Prefix texture name with i (as input) to keep them before the FB

Goal is to ensure that all renderers share the same draw call value.
2016-09-28 19:41:11 +02:00
Gregory Hainaut b34243fa7b gsdx state: TEX0 write behavior might depends on the context
Game: harley davidson
* write tex0 ctx0
* write tex0 ctx1
* draw  ctx 0

Previous GSdx behavior will load the clut every write of TEX0. In the
above case the draw will take the wrong clut.

To be honest, it could be a wrong emulation on the EE core emulation.
The hardware likely got a single clut (1KB cache is quite expensive)
So clut loading must be skipped if the context is wrong.

Next draw will use the ctx1 clut so I apply TEX0 when the context is switched

Please test harley davidson :)

v2: detect context switch from UpdateContext function
V3: always set m_env.CTXT[i].offset.tex, avoid crash (Thanks to FlatOutPS2 that spot the issue)
V4: move bad psm correction code (rebase put it in the wrong place)
2016-09-27 10:04:09 +02:00
Gregory Hainaut be9995bd1e gsdx mipmap: improve robustness to avoid potential crash 2016-09-26 09:27:03 +02:00
Gregory Hainaut 78b2848622 gsdx: factorize the TEX0 generation for mipmap 2016-09-25 11:51:48 +02:00
Gregory Hainaut d89b09427f gsdx: gl logging is only available in MTGS thread
Fix crash in debug build
2016-09-22 17:54:44 +02:00
Gregory Hainaut 6966e08306 gsdx: move alpha test optimization in base class
One code for all renderers :)
2016-09-19 08:48:32 +02:00
Gregory Hainaut 1a1d6ab478 gsdx: handle the invalid format 0x3
International Super Star Soccer seems to use it.

It could be a core bug, in doubt uses the likely expected standard 0x13
2016-09-14 19:22:45 +02:00
Gregory Hainaut 029d74f855 gsdx: add an auto flush hack to implement a Read Write GS effect.
It impacts all renderers. It ought to fix issue in GTA radiosity,
Shadows in Jak series. (note shadows will suck in upscaling)

Implementation is really brutal. Expect a massive slow down, but at least we can test the effect
easily.

Normally perf impact will remain reasonable if the game doesn't use a Read-Write effect

Performances number are welcomes (my guess is really awful in HW mode, slow in SW mode).
You can enable it with "UserHacks_AutoFlush = 1"
2016-09-08 17:25:59 +02:00
Gregory Hainaut c9a1558c60 gsdx: save the blit buffer register when a transfer is started
Fix motocross mania missing texture. Close #1319

As far as I understand, transfer is initialized in DIR. But the real
write only occured later so the blit buffer could have been overwritten
by a new value.

BLIT 0 13700
TREG 40 40
DIR 0 0
BLIT 0 13f00 <=== the bad guy
Write! ...  => 0x3f00 W:1 F:C_32 (DIR 00), dPos(0 0) size(64 64)

v2: set a value in m_tr.m_blit for load state
2016-09-01 09:59:38 +02:00
Gregory Hainaut 90707f8d4e gsdx: avoid aliasing issue
Extend GSVector to support float move

Initial code likely used integer move for performance reason. However due to
the nan correction, register is now in float domain.
2016-08-14 20:48:34 +02:00
Gregory Hainaut 0dcce91a6e Merge pull request #1504 from ssakash/RemoveFunction
GSDX: Remove GetDeviceSize()
2016-08-08 16:15:07 +02:00
Akash bc24e90070 GSDX: Remove GetDeviceSize()
It's not used anywhere and it doesn't seem needed.
2016-08-07 12:43:03 +05:30
Gregory Hainaut e9e1b33884 gsdx: log a nice string instead of the hex format of PSM 2016-08-03 18:07:54 +02:00
Gregory Hainaut 25bc2dff07 gsdx: dump and log EE texture read
It gives a visual opportunity to detect a bad read of the texture cache
2016-07-14 19:45:06 +02:00
Akash e05e7bee82 GSDX: Add proper detection of internal resolution 2016-06-19 17:10:03 +05:30
Gregory Hainaut a9c18c57e4 gsdx option: use the new GetConfig* function
v2:
add PSX stuff
ssakash review
2016-05-28 10:07:27 +02:00
Jonathan Li db81925c4b Merge pull request #1335 from turtleli/freebsd
Support FreeBSD
2016-05-25 18:55:51 +01:00
Jonathan Li 571432a7aa gsdx:freebsd: Fix compilation 2016-05-21 13:34:18 +01:00
Akash 2166980f91 GSDX: Calculate dimensions of rectangle after merge
* Properly display rectangle size after passing through merge circuit on
GS Dumps and GS Frame titlebar.
2016-05-19 15:53:49 +05:30
Akash 58b43dbb6c GSDX: Rework video mode detection code
* Use some nice enums instead of macros
* properly detect 720P/1080I separately.
* Some code cleanup, extended variable names and added few comments
2016-05-19 14:02:50 +05:30
Gregory Hainaut 37c7fa7663 gsdx: add draw exception (OOM and Recoverable)
The exception will free the unused (but allocated) texture aka the emergency break ;)

Recoverable could be useful for unsupported draw call
2016-05-05 17:47:32 +02:00
Gregory Hainaut c8dddfed06 gsdx hack: move m_skip and m_userhacks_skipdraw to GSState level
Avoid to push argument to call IsBadFrame
2016-05-05 16:22:14 +02:00
Gregory Hainaut 21d1bd48ec gsdx hack: move the CRC setup into a separate function
In order to reduce a bit the overhead of IsBadFrame called each draw calls
2016-05-05 16:03:48 +02:00
Gregory Hainaut 60267790a1 gsdx: move (most) of the hw hack into a separate file
GSState.cpp was really too big
2016-04-30 12:24:08 +02:00
Gregory Hainaut e195e67a48 gsdx: move Metal Gear Solid CRC to DX level
OpenGL is near perfect :)
2016-04-29 17:34:17 +02:00
Gregory Hainaut df70b8bb0e gsdx: fix Q NaN value
Avoid potential undefined results
2016-04-26 19:09:32 +02:00
Gregory Hainaut cb8088216b Merge pull request #1281 from PCSX2-Alpha/NTSC_saturation
GSDX: Remove some unnecessary/dubious hacks
2016-04-21 09:28:30 +02:00
Gregory Hainaut 59ef668fd2 Merge pull request #1222 from PCSX2/gsdx-black-fmv
Gsdx black fmv
2016-04-21 09:25:36 +02:00
Gregory Hainaut 4611264ce3 gsdx: add CRC hack for Nocturne PAL
Reduce depth transfer to the real size of the game. Otherwise
we need to handle a mix of color/depth transfer.
2016-04-11 16:04:04 +02:00
Akash a1b0ae467e GSDX: Remove dubious/unnecessary hacks
* Silent Hill 2 doesn't need the CRC hack
* GSRenderer: no need to explicitly set bottom value for r.
* Texture Cache: Removed a check which couldn't possibly enter true
branch.
2016-04-07 15:15:39 +05:30
Akash 69c9a3d793 GSDX: Add an option to disable NTSC saturation
v2: convert it into a member variable.
2016-04-07 15:15:17 +05:30
Gregory Hainaut d922225e69 gsdx tc:invalidate RT when a texture is written inside it
It often happens the game try to upload the FMV directly which typically
gave a black screen.

Commit fix rules of roses and I hope various black screen FMV

Performance impact must be tested, and I'm afraid of strange texture cache behavior.

V2: check the size of the transfer too
V3: add support of 16 bits format
V4: avoid division by 0
2016-04-04 21:29:31 +02:00
Gregory Hainaut 261ef9ab6a gsdx: move some DBZGT hacks to Dx level
Based on this thread:

http://forums.pcsx2.net/Thread-Dragon-Ball-Z-Budokai-Tenkaichi-3-Graphical-Issue-Emulator-does-not-render-outlines
2016-03-25 08:23:50 +01:00
Gregory Hainaut 8ae7f60b04 Merge pull request #1175 from PCSX2-Alpha/GSDX_stuffs
GSDX: Vertical frequency corrections and extra stuffs
2016-02-13 18:15:49 +01:00
Akash e810428c86 GSDX: Remove some old comments
Disgaea 2 intro FMV now works fine with/without upscaling. (confirmed
with rama)
2016-02-12 12:05:42 +05:30
Akash 67a7a63a36 GSDX: Add vertical frequency for all video modes 2016-02-12 05:28:30 +05:30
Akash 1445bf7fb1 GSDX: Extend macros for all video modes.
The following patch detects the other video modes based on Phased lock loop divider (LC)
2016-02-12 04:43:57 +05:30
Gregory Hainaut 51b40c6b18 gsdx: move black CRC hack from openGL to DX level
Rendering is much nicer this way
2016-02-06 17:32:12 +01:00
Gregory Hainaut 85f64b8c08 Merge pull request #1137 from PCSX2-Alpha/CRTC_Scaling
PCRTC: Proper handling for 720P/1080P video modes.
2016-02-01 10:11:58 +01:00
Akash 7407162dfe GSDX: Add some nice macros 2016-01-30 05:19:53 +05:30
Gregory Hainaut 2ff611137e pcsx2|lilypad|gsdx: use portable printf format
(portable: let's see VS compilation...)
2016-01-22 19:46:03 +01:00
Akash 22fccd5143 GSDX: Add a nice debug message 2016-01-20 04:29:23 +05:30
Akash ebb6e34196 PCRTC: Fix video modes higher than 480P 2016-01-20 04:23:45 +05:30
Akash aade5278d8 PCRTC: Better handling of CRTC height saturation 2016-01-10 21:47:59 +05:30
ramapcsx2 4c765a04f7 Change an outdated GSdx comment. It may confuse people nowadays. 2015-12-01 21:36:23 +01:00
Akash d5ba546d2e GSDX: Improve CRTC output size handling 2015-11-09 05:52:42 +05:30
Gregory Hainaut 50e6306331 Merge pull request #919 from ssakash/coverity_init
Coverity: Initialize class members
2015-10-25 20:08:46 +01:00
Akash c1f1646dab GSDX: Initialize class members
CID 146973 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)2. uninit_member: Non-static class member overflow is not initialized in this constructor nor in any functions that it calls.
2999}
2015-10-23 01:35:15 +05:30
Gregory Hainaut 87001326f6 gsdx: remove 4Y-old unused code
It was never used.
2015-10-22 19:51:03 +02:00
Gregory Hainaut 00e37224ed gsdx: check the return value of mkdir function
Reported by coverity
2015-09-26 13:51:23 +02:00
Gregory Hainaut 7bec15b99f gsdx: remove useless condition check
Base pointer and format are always positive (unsigned int BTW) so drop
>= 0 comparison
2015-09-23 09:39:08 +02:00
Avi Halachmi (:avih) 3f81fc98dd gsdx: custom resolution - use 0 instead of 9 2015-09-22 01:00:53 +03:00
Jonathan Li 69d27dfb4b Merge pull request #829 from ssakash/rework_internalres
gsdx changes:
Remove native resolution checkbox from GUI and rework associated code
Small changes to Windows and Linux GUI
Support 8x native resolution
Fix custom resolution width less than native width use case
2015-09-21 20:12:47 +01:00
Gregory Hainaut b60dd9d1fe Merge pull request #814 from PCSX2/coverity-qa-high
Fix a bunches of coverity warning/errors.
2015-09-20 22:18:03 +02:00
Avi Halachmi (:avih) 54afd377ee GSdx: recording: Progressive: make the recorded clip play at full speed
Before this patch, when recording Progressive (frame) mode, it recorded all
the frames correctly but set the clip's fps property to 25/29.97, so when
played back it played at half the speed (but was fine when played at double speed).

This patch does not affect the number of frames recorded per second, but rather
only sets the resulting clip fps property to the correct one (double than before).

Also fixes a bug that in a non-managed window in progressive mode, the title
displayed "200%" speed when it should have displayed 100% speed.

Fixes #832
2015-09-19 14:44:48 +03:00
Akash b97018932d GSDX: Rework Internal Resolution function
upscale_multiplier function values have been changed to allocate native resolution and also move custom resolution to 9.
Remove the old native checkbox value and include Native in the combo box.
Internal GSDX functions have also been updated with this new update to the upscale_multiplier variable.
2015-09-14 10:26:27 +05:30
Gregory Hainaut 2934a15902 gsdx: remove a duplicated check 2015-09-11 08:54:29 +02:00
gabest11 49b3acea72 gsdx: texture size reduction in sw mode, fixes Stolen, less memory usage in general. 2015-08-05 19:11:41 +02:00
gabest11 42f51591df gsdx: lupin 3 fix, texture addressing outside the limits, only for sw and opencl yet 2015-08-04 13:27:08 +02:00
gabest11 d631030608 gsdx: fixed some of the renames where it made no sense, also added a commend about lupin 3rd. 2015-08-04 03:36:42 +02:00
gabest11 e010004f1f gsdx: _isnan was not reliable, rewrote it as GSVector4::replace_nan, it uses cmpps and the result as the mask to blend the original value and FLT_MAX. No jumps or function calls. 2015-08-03 14:35:47 +02:00
gabest11 85117ecbdd gsdx: simplified isnan test, it compiles to an inline sse instruction and a flag test, silent hill dump still looks fine. 2015-08-03 11:27:14 +02:00
gabest11 a1a842b07f gsdx: date/datm fix for 16-bit frame buffer in sw rendering mode 2015-08-02 20:21:49 +02:00
Gregory Hainaut 7ca463bf75 gsdx: NaN is likely not well supported for S & T
Add also a comment to explain the NaN issue on Q
2015-07-21 08:19:36 +02:00
Gregory Hainaut 6719fc89a6 gsdx-sw: Nan is not well supported in Vertex
It fixes the bad light on Silent Hill with the SW renderer.

Full story
if Q is NaN, m_vt.m_eq.q becomes wrongly true
/Q will wrongly be optimized in the "Vertex Shader" of the SW

Note: Add an assert for the STQ handler

Code path is quite hot so no need to add extra check for nothing
2015-07-19 16:41:05 +02:00
Gregory Hainaut c660ea858b gsdx: move some CRC hacks to full level 2015-07-11 15:14:11 +02:00
Gregory Hainaut d46e41533d gsdx: remove various CRC of the openGL level
It is mostly the texture shuffle effect which is now emulated correctly on openGL

They remain in the Dx level as speedhack in particular for
    * Castlevania;
    * GodOfWar;
    * StarOcean3;
    * ValkyrieProfile2;
    * RadiataStories;

Remove old commented hack: Drakengard2, ArctheLad, ReZ

Separate hacks that are only enabled in aggressive mode
2015-07-01 09:36:54 +02:00
Gregory Hainaut 99b03b4632 gsdx-debug: log all write (texture) from the EE
It is verbose but it might help to understand the invalidation of texture
2015-07-01 09:36:53 +02:00
refractionpcsx2 f5e8503fa5 GSdx: Didn't need to change this :P 2015-06-17 22:41:16 +01:00
refractionpcsx2 c31c04d3db GSdx: Fix CRC hacks not re-initialising after option change 2015-06-17 22:25:43 +01:00
Gregory Hainaut b2f8fe3593 gsdx: drop the auto skip depth hack
Just use 1 in skip draw if you want to use it

openGL code will soon be fixed to support depth correctly (and I hope dx in the future)

Conflicts:
	plugins/GSdx/GSState.cpp
	plugins/GSdx/GSState.h
2015-06-17 21:53:08 +02:00
Gregory Hainaut 62beb3aaf4 gsdx: don't do bad stuff if aggressive hack isn't enabled 2015-06-14 10:27:02 +02:00
Gregory Hainaut f765a195e2 gsdx: Don't set CRC function pointer when disabled
Less costly than an extra check for each draw calls
2015-06-14 10:27:02 +02:00
Gregory Hainaut 1699289162 gsdx: move 4 hacks from level2 to level3
remains tons of them :(
2015-06-14 10:27:02 +02:00
Gregory Hainaut 1be8d07f85 gsdx: auto CRC management
Old way various check boxes to configure the plugin

New way an unified drop down list

* Level 0 (dev only) => disable (mostly) all hacks and auto skip depth.
* Level 1 (dev only ) => enable oi/oo/cu hacks, others remains disabled
* Level 2 (GL) => enable most hacks except a couple of one that were fixed on openGL (speed impact)
* Level 3 (DX) => enable all hacks
* Level 4 => enable also aggresive CRC

Note: windows gui must be updated, and it will be nice to create a global tooltip
2015-06-14 10:27:02 +02:00
i30817 4e7e7f2dd5 Nocturne, DDS1 and DDS2 CRC hacks to remove motion blur and smudge filter
Signed-off-by: i30817 <i30817@gmail.com>
2015-06-09 00:25:33 +02:00
refractionpcsx2 1fa13163e4 GSDX: Fix for games which change height but keep the same buffer width
- Fix for games that specify a double height, like Pool Paradise
2015-06-06 20:24:10 +01:00
Gregory Hainaut f8f6117ea9 gsdx-debug: allow to track texture move
Very painful for the cache and the performance
2015-06-04 22:10:04 +02:00
Gregory Hainaut cd6c93cd9e gsdx: silly mistake 2015-06-03 09:31:52 +02:00
Gregory Hainaut 2cbde89084 Merge pull request #555 from PCSX2/real-fb-format
GSdx: better framebuffer format
2015-06-01 11:48:07 +02:00
Gregory Hainaut 9d69ff1f91 gsdx-debug: create the savef option
The idea is to easily extract bad frame from gs dump and to compare them
with the sw renderer.

Here the summary of the options:
savet => dump all input textures
save  => dump the render target
savez => dump the depth buffer
savef => dump the frame
2015-05-31 17:38:52 +02:00
Gregory Hainaut c43ddaec4f gsdx: add Castlevania hack explanation 2015-05-26 17:03:13 +02:00
Gregory Hainaut 3be5a6036b gsdx-ogl: remove assertion + debug message
opengl use a different object to compute the vertex count
2015-05-26 11:03:59 +02:00
Gregory Hainaut 2704a65f57 gsdx: add some info for Star Ocean3/Valkyrie Profile 2/Radiata Stories
Feel free to test those games with CRC disabled on the openGL renderer (native resolution)
2015-05-25 12:37:48 +02:00
Gregory Hainaut 951a1fed94 gsdx-hack: enable auto skip of depth texture for God of War
Rendering is quite complex to emulate on the GPU due to several limitation.
Until we find a solution let's enable the old solution

You could find a description of the rendering here:
http://forums.pcsx2.net/Thread-God-of-War-Red-line-rendering-explained
2015-05-24 13:43:36 +02:00
Gregory Hainaut d566bb2a23 gsdx: sed /st/sTex/ 2015-05-15 20:45:31 +02:00
Gregory Hainaut d870188d21 gsdx: sed/o/off/ 2015-05-15 20:40:09 +02:00
Gregory Hainaut 8e1db43431 gsdx-debug: debug stuff 2015-05-08 19:28:17 +02:00
Gregory Hainaut 544a923e32 gsdx: Add an option to control auto skip of depth texture
Default is 1 if the user enable hack.

It fixes GTA sun effect and likely others bugs.

Please someone add a windows GUI option.
2015-05-07 23:54:22 +02:00
pgert 9a083d5506 gsdx: crc hacks: few new crcs, few crcs region changes
Signed-off-by: Avi Halachmi (:avih) <avihpit@yahoo.com>
2015-05-07 15:57:50 +03:00
Gregory Hainaut 7bfee7e377 gsdx-debug: stop the dump after a limited number of draw call
Otherwise it fills your disk in a short time with useless data.
2015-05-03 16:46:48 +02:00
Gregory Hainaut c8a3db114c gsdx debug: create savet option
0: don't dump input texture
1: dump input texture

Now, you can do a first pass with only RT. When you find the wrong call, you can redump the input texture of the bad draw.
2015-05-01 13:35:21 +02:00
Gregory Hainaut 330d14941f gsdx-linux: support dump mode on linux
It could be useful to analyze GS dump. Warning it consumes a lot of
disk space.
2015-02-21 13:51:06 +01:00
Gregory Hainaut 18405e2598 gsdx: add goemon comment on some assertion
If someone want to trigger them
2014-12-12 22:31:31 +01:00
gabest11 ba1e522bbb Less opencl bugs, some games are actually playable now, there are still texture errors. 2014-12-02 00:16:34 +01:00
gabest11 db7c26cde7 - Experimental OpenCL renderer (missing features: point, line, texture cache, mipmap, aa1, device selection). Needs any OpenCL SDK for the common headers and stub lib to compile, tested with AMD and Intel. Too bad it is not part of the Windows SDK yet.
- Renumbered renderer ids, compatible with old numbering, but it does not follow the mod3 logic anymore.
2014-12-02 00:16:33 +01:00
Gregory Hainaut 47bf88ed3f gsdx: miss break / inline function in header 2014-07-12 16:00:10 +02:00
Gregory Hainaut 0bf7a35a53 pcsx2: improve the GS read fifo API
1/ initReadFifo will be first called on the GS thread
    (openGL can only be done on the GS thread)

2/ readFifo will be called on the EE thread. It is not safe too access eeMem from GS
 because of memory is virtual

Fix "recent" regression (crash) on Kingdom heart and others game too.

v2: add a len check on GSState::InitReadFIFO
2014-05-06 20:28:18 +02:00