Commit Graph

276 Commits

Author SHA1 Message Date
Gregory Hainaut bb306dfe90 gsdx hw: commit texture before a clear in OI hack
Note I didn't bother to compute the draw region for single game hack.
Gain would be 0 if game doesn't suffer of memory issue in the first place
2019-04-26 12:40:04 +02:00
Kojin 116a5d822c gsdx-ogl: update Save() to use committed size of texture 2019-04-26 12:40:04 +02:00
Kojin 9618283217 gsdx-ogl: Add detection of Sparse Depth in isDss() 2019-04-26 12:40:04 +02:00
Kojin 55e95cc552 gsdx-ogl: add destination texture commit to StretchRect 2019-04-26 12:40:04 +02:00
Kojin e9989a5966 gsdx: enable sparse render target in TC 2019-04-26 12:40:04 +02:00
Kojin a1cdeb2fd1 gsdx: add uncommit in recycle 2019-04-26 12:40:04 +02:00
Kojin 4e675ef6e1 gsdx-ogl: add texture commit ogl renderer 2019-04-26 12:40:04 +02:00
Gregory Hainaut ba782e90c8 gsdx ogl: enable sparse feature on GSdevice interface
Note: remain
* To really use sparse texture
* To debug it ^^
2019-04-26 12:40:04 +02:00
Gregory Hainaut 16d5f477ff gsdx ogl: implement CommitPages 2019-04-26 12:40:04 +02:00
Gregory Hainaut e8b2d036ee gsdx ogl: handle creation of sparse texture 2019-04-26 12:40:04 +02:00
Gregory Hainaut 9e7069f374 gsdx hw: add API to manage sparse texture allocation
DX/GL should implement "CommitPages" to really commit memory

Note: CommitPages should also update the m_committed_size member
2019-04-26 12:40:04 +02:00
Gregory Hainaut 643ed528c2 gsdx hw: allow to create sparse texture at device level
Obviously texture allocation should be updated too
2019-04-26 12:40:04 +02:00
lightningterror 3408d1a873 gsdx-d3d11: Move colclip code to blending function.
Also disable a log that was accidentally enabled/pushed.
2019-04-25 16:48:07 +02:00
lightningterror a0c6c1cb9f gsdx-hw: Forgot to remove a crc region check for dbzbt2-3, no longer needed. 2019-04-25 16:34:28 +02:00
lightningterror 8eab618502 gsdx-hw: Purge crc hacks that had their half screen issues resolved (Texture shuffle case).
DBZBT2, DBZBT3, MetalGearSolid3.
2019-04-25 15:08:51 +02:00
Kojin 34ac15f7eb GSdx-hw: Add secret ini option to disable TS half bottom detection 2019-04-25 13:42:47 +02:00
Kojin 7eb0b0ac65 GSdx-hw: Add automatic detection of half-bottom in TS
Typical shuffle case is 1/2 height so other half is undesired

In dbz we split the depth buffer.
- Sample first half, write to `0x0`.
- Sample second half, write to `0x800`
- Finally, sample `0x0` though `0xffc`

Crash Twinsanity is a similar case.
2019-04-25 13:42:47 +02:00
Kojin 97612edd58 GSdx-hw: Move src to protected member 2019-04-25 13:42:47 +02:00
Kojin 6af2f7ef46 GSdx-hwtc: Propagate valid area from dst to source 2019-04-25 13:42:47 +02:00
Kojin acf771edd8 GSdx-hw: Store bounding rectangle in protected member 2019-04-25 13:42:47 +02:00
lightningterror c3f36ad430 gsdx-gui: Separate opengl and direct3d blending options.
A short summary how d3d option behaves compared to gl.

None d3d-> behaves the same
Basic d3d-> even less than 1/3 of Basic opengl.
Medium d3d -> less than 1/3 of Basic opengl.
High d3d -> 1/3 of Basic opengl.

Note: Medium and High options are mostly intended for debug use.
2019-04-23 15:24:04 +02:00
lightningterror d4b62444d1 gsdx-d3d11: Adjust fbmask code on d3d11.
Add the remaining code and separate it in levels because dx sux.

Basic blending mode -> doesn't enable fbmask on texture shuffle and
triangle primitives.

Medium -> doesn't enable fbmask on triangle primitives.

High mode- >  fully enables fbmask, note it's still not on par with
opengl because we miss sw blending for some games.

Also keep in mind that High Blending option on d3d11 is like 1/3 of
Basic Blending option on GL.
2019-04-23 15:24:04 +02:00
lightningterror 641df126c4 gsdx-d3d11: Don't enable fbmask on triangle primitives.
It is quite slow due to fb copy on d3d, add potential notes for future
improvements so I don't forget what I wanted to do.
2019-04-22 05:07:42 +02:00
lightningterror de5e9a85bb gsdx-d3d11: Partial port of frame buffer masking from opengl.
It works on games such as Fifa Street 1 and 2 (character and stage
rendering), mission impossible operation surma (shadow rendering).
It needs at least Basic level of blending enabled on d3d11.
2019-04-22 05:07:42 +02:00
lightningterror 9d60d6acfd gsdx-d3d11: Remove old aout code.
Will be replaced with fbmask code in next commits.
2019-04-22 05:07:42 +02:00
Tyler Wilding 08d923ca6f recording: Append copyright headers
Squashed commits:

[47be08613] recording: Forgot to refactor the usage of std::size
2019-04-21 00:45:44 +02:00
Tyler Wilding 64104ca9fd gui:recording: Revert addition of Screenshot As, will contribute as separate PR
Along with changing the .bmp file naming scheme.
2019-04-21 00:45:44 +02:00
Tyler Wilding 413ba4b430 GSdx: implemented saving a snapshot to a dialog provided file path 2019-04-21 00:45:44 +02:00
lightningterror ac1bc9d6fc gsdx-hw: Move GSC_RadiataStories, GSC_StarOcean3, GSC_ValkyrieProfile2 crc hacks to D3D level.
Follow up from the previous commit which is bypassing the texture cache
when the frame buffer is sampled.
Crc hacks are no longer needed on opengl.

Note: it requires at least Basic blending support.
2019-04-17 03:48:30 +02:00
Gregory Hainaut f406051ed9 gsdx ogl: Bypass the texture cache when the frame buffer will be sampled.
Proof of concept. It should provide a huge speedup when accurate
blending is enabled for tri-ace / Jak / R&C (shadow rendering).

See #2894
Need PR#2892

v2: Add const + comment to explain that code isn't ideal.
2019-04-17 03:48:30 +02:00
lightningterror 52da124a2b gsdx-ogl: Check if primitives are triangles instead of overlapping.
Single triangle draw can now hit the tex_is_fb path.
Primitive Overlap will return no overlap  for single primitive (triangle).
Ratchet and Clank, Jak, tri-Ace games.

It should improve shadow rendering.

Idea by Gregory.
2019-04-10 12:33:31 +02:00
Kojin 73e3072715 GSdx-d3d11: Enable break on D3D message
Enable automatic breaking on d3d11 messages:
- D3D11_MESSAGE_SEVERITY_CORRUPTION
- D3D11_MESSAGE_SEVERITY_ERROR
- D3D11_MESSAGE_SEVERITY_WARNING
- D3D11_MESSAGE_SEVERITY_INFO

Hidden option dx_break_on_severity bitfield

Debug build only.
2019-04-08 00:45:50 +02:00
lightningterror 508a8b477e gsdx-hw: Disable automatic mipmapping on Jak games for now.
It crashes the emulator so until the issue is resolved properly comment
out/disable automatic mipmapping for jak games.

Issue #2916
2019-04-07 19:50:46 +02:00
lightningterror 9c222f8efe gsdx-hw: Some minor comment and code adjustments. 2019-04-04 02:13:57 +02:00
Gregory Hainaut a16fe6f016 gsdx TC: remove dead code
src->m_texture is always NULL, set in Source constructor

Potentially it was a leftover of msaa or the commented code to handle mutable FBW
2019-03-26 14:22:34 +01:00
Gregory Hainaut 374374fdf1 gsdx ogl: disable sparse in extenstion detection
* Allow to keep automatic as default value in the option
* You need to force enable sparse in the option to enable sparse
2019-03-26 14:22:23 +01:00
lightningterror 535b0d4aac gsdx-ogl: Disable sparse depth on amd.
* Bad driver as usual.

* Driver reports a compatible sparse format for depth texture but it isn't attachable to a frame buffer.
2019-03-26 14:22:16 +01:00
lightningterror a30f642860 gsdx-hw: Purge GSC_NarutimateAccel, GSC_Naruto crc hacks.
Naruto Shippuden - Narutimate Accel 3,
Naruto - Narutimate Hero 3.

Depth effects (shadows) rendered correctly.
2019-03-17 05:34:13 +01:00
lightningterror c8d4d5528e gsdx-ocl: Fix some compile warnings. 2019-03-12 02:36:49 +01:00
lightningterror 7354c1fa0d gsdx-hw: Update a few crc issue categories for several games. 2019-03-08 19:33:28 +01:00
lightningterror 889001c026 gsdx-hw: Move GSC_Okami to Aggressive level.
Upscaling issues, hack needs to be updated because it removes too many
effects. Maybe HPO or Wild Arms offset are fine, needs further testing.
2019-03-08 19:23:03 +01:00
lightningterror 910ef1db41 Gsdx hw: Purge GSC_TalesOfAbyss crc hacks.
Depth and channel shuffle rendered correctly on all renderers.
Also add some missing crc ids for Tales of Abyss.

PS: I'm ninjaing 3000 builds on the buildbot 😄
2019-03-08 16:13:39 +01:00
lightningterror 8219bcd1b4 gsdx-hw: Move GSC_YakuzaGames to partial level.
Don't enable hack on native res if crc is below aggressive. Upscaling
issues.

Bonus, revert recent barrier changes on gl date code.
2019-03-05 12:39:07 +01:00
lightningterror e36976bf86 gsdx-d3d11: Minor adjustments to DATE code.
Run fast accurate date instead of alpha stencil when accurate date is
enabled on supported calls, also update some logs and comments.
2019-03-04 20:35:09 +01:00
lightningterror e48ce1bc69 gsdx-ogl: Minor adjustments to DATE code.
Don't set DATE true when Accurate Date is off, DATE is true anyway so
no need to set it again.

Don't call full barrier for DATE 45 at the date selection, do it
at the shader call check. It's the same, plus we avoid extra checks.
2019-03-04 19:39:58 +01:00
lightningterror 425059d882 gsdx: Forgot to move the crc state for mgs3 and ace combat 4.
crc hacks are aggressive only. Fixes regressions mentioned in
https://forums.pcsx2.net/Thread-Metal-Gear-Solid-3-OpenGL-Issue-with-Latest-Builds
2019-03-01 08:37:04 +01:00
lightningterror 8a9abd8a1b gsdx: Purge depth crc hack for GSC_RadiataStories.
Effects rendered correctly, blur/ghosting upscaling issues can be
resolved with HPO special.
2019-02-25 11:35:27 +01:00
lightningterror 79a38858d1 gsdx: Purge GSC_CrashNburn crc hacks.
Depth, texture shuffle rendered correctly.
@MrCK1 did the tests. PAL needs to be tested as well.
2019-02-24 22:12:27 +01:00
lightningterror 8e8598412d gsdx: Purge all crc hacks for GSC_OnePieceGrandAdventure and GSC_OnePieceGrandBattle.
Texture shuffle and hdr colclip.
Effects rendered correctly.
2019-02-23 06:52:40 +01:00
lightningterror 930f07df4a gsdx: Purge depth crc hack for Haunting Ground.
Effects rendered correctly on all renderers.
2019-02-22 17:18:58 +01:00
Gregory Hainaut e56f75fe9a gsdx hw:move vertices fixup for texture shuffle in RendererHw
Bonus: fix m_vt value
2019-02-22 16:57:59 +01:00
lightningterror e55fcae981 gsdx d3d11: re-normalize coordinate when TEX0 is invalid. 2019-02-20 13:49:57 +01:00
Gregory Hainaut 29aef04fbf gsdx ogl: re-normalize coordinate when TEX0 is invalid
Fix #258
Fix #695
2019-02-20 13:49:57 +01:00
Gregory Hainaut 12dcb701c7 gsdx: add a function to fix the TEX0 register value for HW renderer
Based on the SW renderer
2019-02-20 13:49:57 +01:00
lightningterror c6f57c0bdb gsdx: Save hotkey toggle to ini config.
This will allow to save hotkey option toggling to the ini which
should fix gui updating with hotkey toggles.

Note: Render hw/sw switch doesn't work.

Also update some options that didn't have hotkey nametag.
2019-02-20 11:07:02 +01:00
Gregory Hainaut 31d95448ed gsdx device: use same target for fxaa/shaderboost/shaderfx
It avoid to waste VRAM memory
2019-02-13 19:52:43 +01:00
Gregory Hainaut 45dfb0dcdb gsdx device: use generic resize texture function
V2: add missing size for merge and interlace
2019-02-13 19:52:43 +01:00
lightningterror 12b622c9c1 gsdx: Cleanup/update Wild Arms offset hack.
Don't use integer for the variable, option has only on and off states.
Use member variable names and adjust some checks.
2019-02-13 10:28:07 +01:00
lightningterror 19586fdd7f gsdx: Move GSTexturecache files from Common to HW renderer. 2019-02-11 18:18:02 +01:00
lightningterror ca002c56e5 GSdx: Adjust Burnout crc hacks to work on multiplayer mode as well.
Yellow stripes crc hack.
Note: Only Takedown was tested but other games should work as well.
2019-02-09 21:42:38 +01:00
lightningterror dabc99f466 gsdx-ogl: Small colclip improvements.
1. Allow hrd colclip to also run on the unsupported
cases which should be pretty rare.

2. Remove colclip from high sw blending.

3. Disable the hdr colclip shader which may not be
actually required to run.

Idea by Gregory
2019-02-08 14:53:15 +01:00
lightningterror a9e622357a gsdx-ogl: Fix override detection for extensions. 2019-02-07 18:38:40 +01:00
Gregory Hainaut 6282c3d263 gsdx ogl: remove boilerplate of extension check
* Use GLExtension::Has in cold path
* Throw error at first error
* Remove aniso check, all hardware support it. Bonus add GL4.6 extension support
* Remove viewport array check. We replace the function pointer anyway
2019-02-07 12:34:02 +01:00
Gregory Hainaut 86a10969f3 gsdx ogl: load GL_EXT_direct_state_access for sparse texture
They forgot to add is to the ARB extension...
2019-02-07 12:34:02 +01:00
Gregory Hainaut 2ea47a1d96 gsdx-ogl: add sparse format detection
v2: fix wrong variable name
2019-02-07 12:34:02 +01:00
Gregory Hainaut fa7ffcd1bf gsdx-ogl: use a print_once macro 2019-02-07 12:34:02 +01:00
Gregory Hainaut 0e4c63db5d gsdx-ogl: add extensions check that might be useful in the future
Namely
* GL_ARB_multi_bind
* GL_ARB_vertex_attrib_binding
* GL_ARB_shader_storage_buffer_object
* GL_ARB_sparse_texture
* GL_ARB_sparse_texture2
* GL_ARB_compute_shader
* GL_ARB_texture_view

v2: add default option value
2019-02-07 12:34:02 +01:00
Gregory Hainaut aed7ccaadf gsdx ogl: use a set to store the supported extension
Split mandatory/optional extensions

Note: set is nice but likely much slower than reading a boolean
So both are kept
2019-02-07 12:34:02 +01:00
Gregory Hainaut e6b0a7828e gsdx-ogl: add a separate glext.h file
Allow to compile on distribution that still ship an older file
The file is only a patchup of the missing 4.3/4.4/4.5/4.6 define

v2: rename the file and add khronos copyright
2019-02-07 12:34:02 +01:00
Gregory Hainaut 8cd6f4375e gsdx-ogl: use only core debug extension
There are 2 extensions GL_ARB_debug_output (promoted from amd extension)
and GL_KHR_debug (the core extension, promoted from GL_ARB_debug_output)

As we use the callback we could drop the manual query of errors.
And save us the load of the GL_ARB_debug_output extension function pointer.
2019-02-07 12:34:02 +01:00
Gregory Hainaut cd333c2c94 gsdx-ogl: add missing define of glcorearb.h
Migration isn't expected soon but it should ease the process
2019-02-07 12:34:02 +01:00
Gregory Hainaut 8a723b3be8 gsdx-ogl: clean partially the GL1 mess
Remaining will require a move to glcorearb.h
2019-02-07 12:34:02 +01:00
Gregory Hainaut 4f09124f19 gsdx-ogl: generate nearly all gl entries function pointers
I used glcorearb.h as input file

Code is limited to core gl + KHR/ARB extension
GL1.X must be handled manually (need only 3 functions)
I think the solution would be to migrate gl.h/glext.h to the
single glcorearb.h. However we might need to update the code to fetch
pointer accordingly

Note: we don't check the null ptr anymore on GSwnd. It isn't important
as we check the extension.

v2: update copyright
v3: update copyright space
v4: update copyright of script

fix copyright
2019-02-07 12:34:02 +01:00
Gregory Hainaut dbffad2aef gsdx hw: use non virtual Create Texture function.
Just do the format check in FetchSurface. It removes a level of virtual function
and avoid useless code duplication.
2019-02-02 22:54:30 +01:00
lightningterror f02c683178 gsdx: Merge Sly 2 and 3 crc hacks.
Upscaling issue with texture shuffle on dx and gl. Also removes shadows
on gl.
Bbox issue on dx.

Dumps from Sly 2 and 3 look fine after the merge.

Also add a crc id BF1739E2 for a prototype Sly2. I don't remember who
game me the dump or if it's official.
2019-01-28 21:58:30 +01:00
lightningterror ee7749452d gsdx-d3d11: Remove unused function OMSetRenderTargets with UnorderedAccessView.
Note ID3D11UnorderedAccessView parameters are also unused but could be
useful for future DATE ports.
2019-01-28 21:01:22 +01:00
lightningterror 4c477d3cd6 gsdx-debug: Disable Alpha Test debug logs on d3d11.
Unfortunately they do more harm than help, slowing things quite a lot
because of the endless log spam when debugging gs dumps.
2019-01-28 20:38:11 +01:00
Kojin af64865c5d gsdx-d3d11: Framebuffer copy improvements
Improved handling of frame buffer copy by accounting for fb read on all slots.

- implement before/after draw functions
- defer setting of resources on the api to just before the draw
- use a bitfield to keep track of set/copied resources
- recycle copies after draw

Fixes: RE4 and Tales of Abyss
2019-01-27 16:40:39 +01:00
lightningterror ece7d6e718 gsdx-ogl: Update intel bad driver log.
Assume that driver support is good when GL_ARB_texture_barrier and
GL_ARB_direct_state_access are both supported, disable the log in that
case.

Kaby Lake and above already support the required extensions (windows) so
the log is useless. It should be the same case for Skylake. Mesa driver
should already be good.

Note: SSO is still broken even on latest igpu.
2019-01-27 00:12:08 +01:00
lightningterror d4833a4618 gsdx-d3d11: Add final specifier to some voids. 2019-01-26 16:13:07 +01:00
lightningterror 744fa18d95 gsdx-d3d11: Merge/move GSDeviceDX code to GSDevice11.
Update VS and cmake project files, remove GSDeviceDX files.
2019-01-26 16:13:07 +01:00
lightningterror 19b97f8684 gsdx-ogl: Remove useless SetupIA from GSDeviceOGL.h not used. 2019-01-26 16:13:07 +01:00
lightningterror 2e2c9b14a4 gsdx-ogl: Enable anisotropic filtering only for triangles.
Sprites are flat so aniso is likely useless (it would save perf for
others primitives).

Idea by Gregory.
2019-01-26 14:52:30 +01:00
lightningterror 7b4133ac08 GSdx-d3d11: Add final to Renderer class and DrawPrims, also change some voids to inline. 2019-01-24 20:30:48 +01:00
lightningterror 78f0b65e19 GSdx-d3d11: Merge GSRendererDX11 and GSRendererDX together.
Update VS and cmake project files to match new changes.
2019-01-24 20:30:48 +01:00
lightningterror b9df1e643b gsdx-hw: Adjust/cleanup hw hacks variable calls.
Use a function to check UserHacks for all variables in GSState.cpp
instead of checking each variable individually.

Get rid of UserHacks_HPO local variables in GSRendererOGL/DX and use the
member variable m_userHacks_HPO instead, we don't need duplicates that
do the same thing.

Add ResetStates call at the beginning of GSRendererDX to match gl
behavior.
2019-01-23 12:24:12 +01:00
lightningterror 2aadf0be89 GSdx: Adjust Scaling Factor.
Use value of 1 when upscale multiplier is 0 for ScalingFactor, this is
to avoid doing math with 0 in shader.

It helps custom res be less broken. Still not recommended to use custom
res ofc.
2019-01-22 23:25:01 +01:00
Kojin 8c8b1f497c gsdx-d3d11: ICO depth HLE
Game reads framebuffer depth as alpha of texture.
However, this is a problem for d3d11 as a shader read on the fb is not allowed.

So let's handle it in a similar fasion to channel shuffle:
- Set depth to slot 4
- Detect when slot 4 matches depth rt
- Copy and send the copy to the shader
2019-01-22 06:52:24 +01:00
Kojin 468b9ded46 gsdx-d3d11: Update texture copy method to handle depth
- Rename CopyRenderTarget to CloneTexture
- Allow copy of depth target

Also fix a small oversight from the removal of MSAA.
2019-01-22 06:52:24 +01:00
Kojin 57824261c6 gsdx-d3d11: Cache rt depth stencil on m_state
Cache the depth stencil in addition to color rt.
This will allow us to check for depth stencil equality on slot 4.
2019-01-22 06:52:24 +01:00
lightningterror 946e6046b3 gsdx: Adjust some crc hack comments for some games.
Maybe in the future I'll add github issue links to corresponding crc
hacks.
2019-01-21 19:38:20 +01:00
lightningterror 548d6b31bf Gsdx: Purge GSC_RedDeadRevolver crc hacks.
Blurring with a bit of ghosting is intended and it looks like that on
the console as well.

Depth properly emulated.

D3D11 misses blending.
2019-01-20 19:49:36 +01:00
lightningterror 4ecbb750a8 GSdx: Purge GSC_BlackHawkDown crc hacks.
Channel and texture shuffle emulated correctly.
2019-01-20 00:05:18 +01:00
lightningterror b4cb805a91 gsdx-tc: Remove CanConvertDepth virtual bool and use m_can_convert_depth for depth toggling. 2019-01-18 14:53:06 +01:00
lightningterror bbd8cbbcf4 GSdx: Move GSC_DeathByDegreesTekkenNinaWilliams to partial crc level.
Upscaling issues + unsupported texture shuffle.
Hacks might need to be updated.
2019-01-18 13:17:28 +01:00
lightningterror 0c3a0da58f GSdx: Purge GSC_LegoBatman crc hacks.
Effects emulated correctly with texture shuffle and depth.

Game has upscaling issues which can be fixed with TC offsets.
2019-01-17 09:58:59 +01:00
lightningterror 51fe6c20ca GSdx: Adjust dbz bt glow/blur crc hack.
Don't enable hack on native res if crc(ntsc only) is below aggressive.

Note for future so I don't forget: This hack can be disabled if depth
hack is also disabled.
2019-01-17 07:45:35 +01:00
Kojin e429677a07 gsdx-hw: Completely remove MSAA from renderer code. 2019-01-15 19:13:14 +01:00
lightningterror ee4d295667 GSdx-d3d11: Remove afix factor from 24bit format. 2019-01-14 16:52:19 +01:00
lightningterror e05b5d2420 GSdx-d3d: Move channel and texture shuffle in GSRendererDX.
Preparations for file merge.
2019-01-14 02:30:25 +01:00