Gregory Hainaut
6f19d928f6
gsdx ogl: use the new uniform cache upload method
2016-05-29 10:13:43 +02:00
Gregory Hainaut
fa15d7fd26
gsdx ogl: generic code to cache uniform buffer
...
It will allow to skip a buffer transfer if the new content is the same
2016-05-29 10:13:43 +02:00
Jonathan Li
36cd1ae3cc
windows: Remove parameter from prebuild command
...
It's unused. Also convert to using SolutionDir instead of Svnwhatever.
2016-05-28 23:25:08 +01:00
Gregory Hainaut
58f04975e1
oups fix link
2016-05-28 18:49:49 +02:00
Gregory Hainaut
179681ef18
gsdx ogl: enable AMD driver blending workaround only on latest legacy driver
...
Legacy GPU:
Older driver will be broken.
Still supported GPU:
Please upgrade to the latest AMD driver 16.5.2 or 16.5.3 (and prey that future driver will still work)
2016-05-28 18:43:55 +02:00
Gregory Hainaut
a648e2db70
gsdx: switch to dx10/11 as default on Windows
...
1/ Detecting Dx level requires a DX context.
2/ Dx9 GPU market is 1-2% (I'm not even sure they can run latest windows 10)
2016-05-28 10:07:27 +02:00
Gregory Hainaut
c61e09e36a
fix left over default
2016-05-28 10:07:27 +02:00
Gregory Hainaut
453ac88dce
gsdx option: use CaptureWidth/CaptureHeight on linux too
2016-05-28 10:07:27 +02:00
Gregory Hainaut
a9c18c57e4
gsdx option: use the new GetConfig* function
...
v2:
add PSX stuff
ssakash review
2016-05-28 10:07:27 +02:00
Gregory Hainaut
03a6f2093e
gsdx option: add multiple GetConfig to avoid overload issue
2016-05-28 10:07:27 +02:00
Gregory Hainaut
05818d70f4
gsdx option: centralize default configuration to a single file
...
Potential issue
* miss a default value
* Renderer is DX9 again on windows
* Case issue
* Same default for all code paths
* overload of GetConfig
v2: separate specific OS option
2016-05-28 10:07:26 +02:00
Akash
2409817556
GSDX: Move PSX code to an isolated path
2016-05-26 19:04:17 +05:30
Jonathan Li
06dba2d258
Merge pull request #1372 from PCSX2-Alpha/Windows_GUI
...
GSDX-Windows: Add "Large Framebuffer" option
2016-05-26 08:57:33 +01:00
Akash
9ae6c2673a
GSDX-Windows: Add "Large Framebuffer" option
2016-05-26 11:38:24 +05:30
Jonathan Li
352b61c741
gsdx: Allow normal assert to be used
2016-05-26 00:11:52 +01:00
Jonathan Li
db81925c4b
Merge pull request #1335 from turtleli/freebsd
...
Support FreeBSD
2016-05-25 18:55:51 +01:00
Gregory Hainaut
60e0f3b9b5
Merge pull request #1234 from PCSX2-Alpha/Time_Crisis
...
GSDX: Improve CRTC width detection
2016-05-25 17:51:07 +02:00
Gregory Hainaut
b6da1bcb15
gsdx linux: add the new option checkbox
2016-05-23 19:38:44 +02:00
Gregory Hainaut
0c3324b6ef
gsdx hw: create a large_framebuffer option
...
Enable it to ensure correct rendering (FMV)
Disable it to reduce GPU/memory requirement
Option will likely be removed when the perf impact will be reduced.
2016-05-23 19:38:44 +02:00
Gregory Hainaut
1f4439a89e
gsdx: add some notes of potential optimization
2016-05-23 19:38:44 +02:00
Jonathan Li
571432a7aa
gsdx:freebsd: Fix compilation
2016-05-21 13:34:18 +01:00
Jonathan Li
57cdf0bf16
gsdx:linux: Use clock_gettime instead of ftime
...
ftime is obsolete and not present in recent POSIX specifications.
2016-05-21 13:33:40 +01:00
Jonathan Li
da2046e90e
gsdx: Use alignas instead of __aligned
...
__aligned is defined in FreeBSD headers and will cause compile errors.
2016-05-21 13:23:11 +01:00
Gregory Hainaut
a7ba779ba8
gsdx ogl: another HLE channel effect for terminator 3
...
Same as before but with a different fbmask value (I don't know why but
I have the feeling that I might need the others value too)
2016-05-20 19:55:39 +02:00
Gregory Hainaut
1c21ea955c
gsdx ogl: HLE channel effect for terminator 3
...
Unfortunately I think the game uses another similar effects
2016-05-20 19:45:20 +02:00
Gregory Hainaut
247d33a627
gsdx ogl: always clear depth buffer in FFX2
...
It avoid depth issues and I'm sure it won't broke other games this way.
Issue #1340
2016-05-19 17:53:46 +02: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
e258f3e2fa
gsdx ogl: update accurate DATE behavior
...
* Fast accurate DATE is always enabled, it was faster than standard DATE
* The less fast version is always enabled too. It is likely barely used
so perf impact will be small on few game that could hit this path.
Nice rendering has a higher priority
* The "slow" path will depends on the date option.
Note normally it isn't too slow (-10%) if GL_ARB_shader_image_load_store
is supported but AMD crimson is an epic fail.
2016-05-19 10:03:46 +02:00
Jonathan Li
7b27be1306
gsdx: Consider horizontal offsets when merging output
...
Fixes games like Time Crisis 2/3, which use two half-width display
rectangles placed side by side in split screen mode by using different
DISPLAY.DX values.
2016-05-19 10:06:12 +05:30
Gregory Hainaut
14fa797235
gsdx hw: always uses a big RT on snowblind engine game
...
Avoid headack to avoid conflict between 1280x1024 and 640x1280 resolution
2016-05-17 20:01:00 +02:00
Gregory Hainaut
a4c7541092
gsdx ogl: tentative hack to make FFX go along with depth option
...
Issue1: Depth buffer is wrongly invalidated only the first page is detected.
Issue2: First page seems to be partially written. Could be a GSdx transfer bug.
Anyway, invalidation only support a page granularity.
So here a quick workaround that will clear depth buffer in case of very small partial write.
Might worth to check regression on nocturne/digital saga
2016-05-17 19:33:12 +02:00
Gregory Hainaut
37c049425d
gsdx ogl: gl depth is written by default
...
Fix bad depth state in dump (yes the bug is 2 years old!)
2016-05-16 20:10:32 +02:00
Gregory Hainaut
f5b174f985
gsdx ogl: pitch is always the width of the transfer not the size of the texture
2016-05-16 19:20:01 +02:00
Gregory Hainaut
fa921215d9
gsdx ogl: add GL_ARB_get_texture_sub_image extension support
...
could help to read back a portion of a texture
2016-05-16 18:58:33 +02:00
Gregory Hainaut
e02753df46
gsdx ogl: oups, mandatory function pointer was wrongly optional
2016-05-16 18:58:33 +02:00
Gregory Hainaut
37e4d2bd48
gsdx ogl: update old comment
2016-05-16 18:58:33 +02:00
Gregory Hainaut
96b5170d8c
Merge pull request #1317 from PCSX2/gsdx-array-coverage
...
Gsdx array coverage
2016-05-16 18:16:15 +02:00
Gregory Hainaut
ed0adf61d3
gsdx ogl: allow to define a debug context in windows.
...
Be aware: dev build will be slow and quite chatty
2016-05-16 17:08:20 +02:00
Gregory Hainaut
30ce6b0a6a
gsdx ogl: check debug function exists
...
I'm sure they exists in the openGL renderer context but there are
also used in common code. So potentially in DX context.
2016-05-16 16:59:00 +02:00
Gregory Hainaut
99476f4b13
gsdx ogl: explain better previous clear vs framebuffer comment
2016-05-16 16:49:18 +02:00
Gregory Hainaut
08f7bd2dc3
gsdx: add crc hack for Ar tonelico 2
...
It would requires some texture dynamic width convert shaders.
So as a quick solution, let's add a new CRC hack.
For issue #1362 (granted the CRC is correct)
2016-05-16 10:55:02 +02:00
Gregory Hainaut
1522cba5b0
gsdx ogl: performance note of texture clear vs framebuffer clear
...
In case of render target. FB clear is better
2016-05-16 10:38:47 +02:00
Gregory Hainaut
e776118de9
gsdx-ogl: implement previous DATE optimization in a single shader pass
...
Faster :) Reduce further the cost of accurate date
The optimization will clear the stencil to 1. So all pixels will have a
single sample that pass both the depth & stencil test. No primitive
overlaps So the destination alpha test can be done directly in the
shader.
2016-05-15 17:44:40 +02:00
Gregory Hainaut
3ab12cef2f
gsdx ogl: accelerate special case of accurate date.
...
Game often uses date to allow a single pixel pass. If this
use case is detected, stencil buffer will be cleared after first pixels
that pass both depth&stencil test.
It seems to reduce the load on the GPU.
Note: with the help of texture barriere, maybe we could implement the algo
with a single pass.
2016-05-15 17:22:58 +02:00
Gregory Hainaut
025be70c42
gsdx-ogl: allow to fallback to a slow accurate DATE when GL_ARB_shader_image_load_store isn't supported
...
The best is still to have a DX11 generation GPU
2016-05-15 16:29:29 +02:00
Gregory Hainaut
5b061e062c
gsdx ogl: replace ClearRenderTarget_i by glClearTexSubImage
...
Avoid state change, avoid potential texture buffer reallocation
Note: require GL_ARB_clear_texture
2016-05-15 15:55:31 +02:00
Gregory Hainaut
82060320ef
gsdx ogl: use draw list size for sprite instead of vertex number to select date algo
...
Latest overlap detection allow to draw multiple sprite instead of 1,
so the limit based on vertex number is too conservative.
2016-05-15 15:00:52 +02:00
Gregory Hainaut
c054b097e9
gsdx ogl: fix wrong depth clear
...
If a color buffer is still attached and is smaller than depth buffer,
the latter won't be fully cleared.
As a faster alternative, use GL4.4 clear texture function. Avoid to fiddle with
framebuffer and pixel tests.
Fix #1362x Ar Tolenico 2 map clip
2016-05-15 14:57:37 +02:00
Gregory Hainaut
caacb1dc9f
gsdx-ogl: add texure clear function (GL4.4)
2016-05-15 14:57:11 +02:00
Gregory Hainaut
d47d9e5017
gsdx-ogl: fix a minor gcc warning
2016-05-15 13:10:46 +02:00
Gregory Hainaut
913e3d65d2
gsdx ogl: use glViewportIndexedf and glScissorIndexed
2016-05-14 17:18:16 +02:00
Gregory Hainaut
cd9ee3c468
gsdx ogl: emulate GL_ARB_draw_buffers_blend and GL_ARB_viewport_array
...
New functions only set the parameter to a single buffer whereas old function
set all buffers
2016-05-14 17:15:30 +02:00
Gregory Hainaut
4065730e36
gsdx ogl: merge sprite hack take 2
...
try to detect paving correctly. Avoid to break effect such as Heat effect in Tekken5
2016-05-14 12:24:56 +02:00
Gregory Hainaut
2fc244a3eb
gsdx-ogl: inline function only call once
2016-05-14 11:53:02 +02:00
Gregory Hainaut
24a673c482
gsdx ogl: avoid special format on the merge sprite hack
2016-05-13 18:28:21 +02:00
Gregory Hainaut
156b6425d2
gsdx ogl: add UserHacks_merge_pp_sprite option to reduce upscaling glitches
...
For test purpose, it is higly experimental.
So far it is yield interesting result for tekken5
2016-05-10 08:12:07 +02:00
Gregory Hainaut
c019f86529
gsdx ogl: add a performance note for a potential channel optimization
2016-05-10 08:11:28 +02:00
Gregory Hainaut
4effc70792
gsdx hw: Fix regression on align sprite
...
The hack also updates position of not texture mapped sprite.
Unlike the 2nd hack (round sprite) which can be skipped if TME is disabled
2016-05-09 09:45:34 +02:00
Gregory Hainaut
5b04672ba2
gsdx ogl: separate Tales of Abyss/Urban Chaos effect based on the fbmask
...
Avoid to rely on CRC
2016-05-08 17:31:13 +02:00
Gregory Hainaut
48d962e15a
gsdx log: print detected crc
...
Helpful to get crc from gs dump
2016-05-08 16:30:50 +02:00
Gregory Hainaut
fb6a6f73c4
gsdx: move Tekken5/Tales of Abyss CRC to Dx level
2016-05-07 22:46:42 +02:00
Gregory Hainaut
ecbcc566fe
gsdx ogl: use GT shader for Tourist Trophy
2016-05-07 22:46:41 +02:00
Gregory Hainaut
fc86620327
gsdx ogl: disable channel effect when signature is a bit different
...
Hack to avoid regression on Blood Will Tell
2016-05-07 22:46:41 +02:00
Gregory Hainaut
30b452543a
gsdx ogl: tekken5 uses similar effect as Gran Turismo
...
So just reuse GT hle shader :) Acid stage is now correct. However it might need
some tuning for others stages.
Still look awful with uspcaled resolution (note internal game framebuffer is around 160x128)
2016-05-07 22:46:41 +02:00
Gregory Hainaut
d41613c46a
gsdx ogl: add a Tales of Abyss HLE shader
...
Again fast and efficient but it relies on CRC
v2: forget to update the precompiled shader...
2016-05-07 22:46:41 +02:00
Gregory Hainaut
d5681ba01c
glsl: fix a bug in urban chaos hle shader
...
Bug only impact the lsb bits of the depth conversion, so impact is likely small
2016-05-07 22:46:41 +02:00
Gregory Hainaut
70ee8c5bc4
gsdx ogl: add an HLE brightness/contrast shader for GT series.
...
It works and it is very fast. But it relies on CRC
Others effect need to be tested as well
2016-05-07 22:46:41 +02:00
Gregory Hainaut
91c164ecca
gsdx tc: avoid potential division by 0
2016-05-07 18:36:28 +02:00
Gregory Hainaut
265ea82780
gsdx tc: avoid to load data outside of the GS memory
...
Avoid crash in Kungfu panda
2016-05-06 21:46:29 +02:00
Gregory Hainaut
f34e77f08c
gsdx: fix regression on 24 bit format (gust game)
...
bpp is the size of the container format but not the size of the format itself.
For PSM24, bpp is 32, trbpp is 24
2016-05-06 13:49:24 +02:00
Gregory Hainaut
e890ce989c
gsdx: throw oom exception + error
...
Texture can't be NULL anymore, so we can remove a couples of check
2016-05-05 18:53:51 +02:00
Gregory Hainaut
d58b71688b
gsdx debug: auto GL_POP
...
Nicer and exception safe
V2: miss definition of vs/ps
2016-05-05 18:53:32 +02:00
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
7b0427e86e
gsdx hack: use psm lookup + remove now useless log
2016-05-05 15:46:54 +02:00
Gregory Hainaut
8424eeb4ee
gsdx tc: small hint for the compiler
2016-05-05 15:32:21 +02:00
Gregory Hainaut
055b9c57e7
gsdx tc: use unscaled size as clamping in Target::Update
...
Might avoid/reduce crash like #1340
2016-05-05 12:59:49 +02:00
Gregory Hainaut
5948c2d8cd
gsdx AMD: broken for broken
...
Until AMD release the driver with a fix, I can't use 2nd blending source with SSO.
So let's use the first source. Blending/Alpha will be wrong. But it is likely better
than an uninitialized alpha value.
2016-05-05 12:24:55 +02:00
Gregory Hainaut
f712c5c6d0
gsdx tc: use GSLocalMemory::m_psm instead of hardcoded value
2016-05-05 12:19:25 +02:00
Gregory Hainaut
642cc50ac4
gsdx hw: reduce verbosity of channel skip log
2016-05-05 12:19:19 +02:00
Gregory Hainaut
7c430c9d3c
glsl: fix coordinate in channel depth effect
...
UV can't be used directly in channel effect
Properly fix Urban Chaos smoke
2016-05-04 18:08:40 +02:00
Gregory Hainaut
b8b0a0d662
gsdx hw: remove dead code
2016-05-04 18:08:34 +02:00
Gregory Hainaut
90af611fdb
gsdx ogl: Fix channel effect interaction with accurate blending
...
* Vertex info must be updated before PrimitiveOverlap
* Fix the vertex number (2 not 4)
* add an uint16 cast to shut up Visual Studio
2016-05-02 19:48:11 +02:00
Gregory Hainaut
e190841d67
gsdx ogl: improve blending logging
2016-05-02 18:14:02 +02:00
Gregory Hainaut
3077cc82cc
gsdx hack: Ghost in the Shell still broken in openGL
2016-05-02 18:14:02 +02:00
Jonathan Li
6430e41fb5
gsdx:windows: Update GUI to reflect recent changes
...
"Enable Hardware Depth" removed from main dialog.
"Disable Depth Emulation" and "Fast Texture Invalidation" added to Hacks
dialog.
And fix lots of whitespace issues.
2016-05-02 00:28:10 +01:00
Akash
21e6a344a2
GSDX: Improvements to the GSDX dialog ( #1284 )
...
GSDX: Improvements to the config interface.
- GSDX: Add new logos to dialog
- GSDX: Remove all the extra null renderers
- GSDX: Changes to renderer combobox
- Sort all the renderers in ascending order. (the fact that D3D11 was
above D3D9 really annoyed me >_<)
- Properly display usage of D3D10/D3D11 on the combobox.
- Use highest available version of DX by default.
- GSDX: gray out upscaling hacks at native resolution
- GSDX-PSX: Modifications to the dialog
- Add new logos
- Remove SDL renderer from combobox since it was removed long ago.
2016-05-01 17:33:53 +01:00
Gregory Hainaut
826b38c47a
gsdx tc: use array in GSOffset to store texture coverage
...
GSOffset is already based on a lookup of PSM/BP/BW. Coverage only adds
the size parameters (so only 256 possibilities)
It replaces the hash lookup with a free array access.
2016-05-01 15:02:36 +02:00
Gregory Hainaut
7add3d1018
gsdx hack: add a lengthy comment to explain man hunt2 hack
...
An HLE shader replacement could be done for this game but it is
low priority
2016-05-01 13:37:54 +02:00
Gregory Hainaut
4bf484c881
gsdx: move various games crc to dx level
...
* GT3
* GT4
* GTConcept
* JamesBondEverythingOrNothing
* SkyGunner
* StarWarsBattlefront2
* StarWarsBattlefront
* TouristTrophy
* ICO
* DeathByDegreesTekkenNinaWilliams
2016-05-01 13:22:12 +02:00
Gregory Hainaut
5676acaef9
glsl: support channel effect on depth texture too
2016-04-30 16:07:45 +02:00
Gregory Hainaut
e0581ee771
gsdx ogl: Finalize the urban chaos workaround
...
Rendering must be nice now
2016-04-30 14:52:53 +02:00
Gregory Hainaut
14e1ed06df
glsl: add an HLE shader for Urban Chaos
...
Pro:
* Replace 140 draw calls into a single one
* No complex texture conversion/lookup
* smaller solution than a generic solution
2016-04-30 14:52:53 +02:00
Gregory Hainaut
7d191ebf8e
gsdx tc: load palette for pseudo 8 bits depth
...
Rendering is still broken but I'm afraid it will need a dedicated shader
2016-04-30 14:52:43 +02:00
Gregory Hainaut
12b8704502
gsdx dx: disable channel shuffle
2016-04-30 14:52:43 +02:00
Gregory Hainaut
b4c7d32741
gsdx ogl: avoid to wrongly detect a channel shuffle
2016-04-30 14:52:43 +02:00
Gregory Hainaut
1011a757a8
gsdx hw: factorize redundant code
2016-04-30 14:52:43 +02:00
Gregory Hainaut
b78c772a14
gsdx: improve detection of channel shuffle
...
Improve rendering on Prince Of Persia (requires preload data hack)
Worth to re-test: MTGS2/3
Urban Chaos is a bit better but there still a bad overlay
2016-04-30 14:52:43 +02:00
Gregory Hainaut
02dff2653a
gsdx hack: sort the file
...
* separate Dx only/aggresive hack
* add GSC_CrashNburn and GSC_BullyCC to Dx only section
2016-04-30 12:45:06 +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
7a5e1d4154
gsdx ogl: allow to use a separate texture for the channel effect
2016-04-29 17:34:17 +02:00
Gregory Hainaut
a9d25efcde
gsdx ogl: extend state to support up to 8 textures
2016-04-29 17:34:17 +02:00
Gregory Hainaut
e45f90fac3
gsdx: fix a gcc warning
2016-04-29 17:34:17 +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
5e5069423b
Merge pull request #1321 from PCSX2/gsdx-preloadcrash
...
GSDX: Avoid crash when TBW == 0 - Preload data frame
2016-04-28 23:06:29 +02:00
Gregory Hainaut
cb19451418
gsdx ogl: implement RT channel fetch
...
Fix blending of Metal Gear Solid/KillZone (and potentially other games)
Potentially impact issue #905 , #594 , #914 , #896
2016-04-28 22:56:38 +02:00
Gregory Hainaut
c445a14c46
gsdx ogl: extend shader to lookup a single channel
2016-04-28 22:56:38 +02:00
Gregory Hainaut
eaa4fd41e2
gsdx ogl: improve logging of special effect
2016-04-28 22:56:38 +02:00
refractionpcsx2
0aa8fe0f20
GSDX: Avoid crash when TBW == 0
2016-04-28 21:36:21 +01:00
Gregory Hainaut
f946f38f26
gsdx hw: keep the debug counter in sync
...
Otherwise I'm screwed :p
2016-04-28 20:03:53 +02:00
Gregory Hainaut
04a578495f
gsdx hw: disable channel shuffle effect
...
Greatly reduce memory requirement for target
MGS3 at 4x: from 2680MB to 160MB
Remove a couple of (slow) draw calls
2016-04-28 19:46:26 +02:00
Gregory Hainaut
f63e38a59e
gsdx ogl: as always some games do bad stuff
...
Let's keep a comment for the moment. I don't know if we need to fix it, neither how.
2016-04-28 19:42:00 +02:00
Gregory Hainaut
45bfe2ad58
gsdx hw: trace some special post processing effect
...
* Double downscale is done in GTA
* Channel Shuffle is the top-left corner issue
So far nothing is emulated
2016-04-28 19:39:57 +02:00
Gregory Hainaut
5b04f4dab9
gsdx: add optimization note for the future
2016-04-28 18:01:21 +02:00
Gregory Hainaut
4808d89449
gsdx ogl: use enum pretty name
2016-04-28 18:01:20 +02:00
Gregory Hainaut
ab31915ce9
gsdx: glsl: fix silly typo
...
And regression on various games
2016-04-27 09:52:35 +02:00
Gregory Hainaut
aeb92592e7
gsdx ogl: use GSUtil::GetClassVertexCount
2016-04-26 19:29:04 +02:00
Gregory Hainaut
df70b8bb0e
gsdx: fix Q NaN value
...
Avoid potential undefined results
2016-04-26 19:09:32 +02:00
Gregory Hainaut
726b901dc5
Merge pull request #1304 from PCSX2/gsdx-faster-texture-cache
...
gsdx tc: reduce texture cache overhead
2016-04-26 16:46:44 +02:00
Gregory Hainaut
49d175b677
gsdx tc: allow to create a dummy Source without tons of memory allocation
...
It makes shared texture virtually free from the CPU PoV.
2016-04-24 22:30:56 +02:00
Gregory Hainaut
ad08701cb1
gsdx tc: trick the texture cache to use a depth format for depth texture
...
This way we avoid the rescaling of the depth buffer and texture allocation.
2016-04-24 22:18:26 +02:00
Gregory Hainaut
1960d51e60
gsdx tc: properly support 16 bits depth conversion
2016-04-24 22:18:26 +02:00
Gregory Hainaut
de38963904
gsdx ogl: plug the new depth sampling in the renderer
...
Note:
When source format is depth, integral texture coordinate must be used => depth_fmt 1/2/3
2016-04-24 22:18:26 +02:00
Gregory Hainaut
fda511a949
gsdx glsl: extend hw shader to sample depth texture
...
Will use integral coordinate to avoid any rescaling.
Bilinear interpolation isn't supported. I don't think it is allowed to
filter a depth texture anyway.
2016-04-24 22:18:26 +02:00
Gregory Hainaut
583de1bf0b
gsdx tc: add a dedicated function to lookup a depth source
...
The hypothesis is that game will use a depth (aka Z32/Z24/Z16/Z16S)
format when sampling depth texture as color. Technically one could use
a standard color format but block/pixel order won't be the same.
(otherwise I'm screwed)
=> Hypothesis invalid on GoW. They just do a scrambled rendering...
Lookup info:
* The first searched list is the depth pool as we search a depth
texture.
* 2nd one is the render target pool (if a depth was converted to a
render target already)
To avoid any CPU overhead, the source will be a pointer to the real texture
* Conversion (if float texture) will be done on the fly by the shader (GPU).
* Relative rescaling won't be supported. Texture must be fetched with
integral coordinate
2016-04-24 22:18:26 +02:00
Gregory Hainaut
9ee090a36e
gsdx tc: add a shareable texture flag
...
Plan is to bypass shader conversion/rescaling/copy for depth texture
2016-04-24 22:18:26 +02:00
Gregory Hainaut
8ec1461842
gsdx: increase the number of texture in the pool
...
It could slightly increase the VRAM requirement but it will reduce texture
allocation/unallocation at start/end of frame.
2016-04-24 22:14:51 +02:00
Gregory Hainaut
b4b878ac24
gsdx-ogl: add a note for a future small optimization
2016-04-24 22:14:51 +02:00
Gregory Hainaut
4281b8630b
gsdx ogl: remove the useless shadeboost Constant Buffer
2016-04-24 11:08:14 +02:00
Gregory Hainaut
d610a6aac4
gsdx glsl: ofc forget to do the shader in bin
2016-04-24 11:07:46 +02:00
Gregory Hainaut
d027ed2092
gsdx ogl: merge GSTextureFXOGL to GSDeviceOGL
...
First file is rather small in openGL. And it is linked to the latter.
2016-04-24 10:55:22 +02:00
Gregory Hainaut
1558220f74
gsdx glsl: create a common header definition
...
* avoid duplication between all the files for UBO
* remove various interface define
2016-04-24 10:54:39 +02:00
Gregory Hainaut
8ee0783bd3
GSdx: remove useless variable
2016-04-24 10:42:03 +02:00
Gregory Hainaut
fa1377a8ee
gsdx tc: reduce texture cache overhead
...
Cache page coverage of texture into a hash map
Test done on Champion of Norrath (paltex + DisablePartialInvalidation)
Profiler:
Self of GSTextureCache::SourceMap::Add 5.39% => 0.23%
Self of GSTextureCache::LookupSource 15.27% => 10.82%
Hard to measure on CoN as it depends on memory transfer. Seem to be 5-10 fps faster.
2016-04-23 19:22:58 +02:00
Gregory Hainaut
67e955919f
gsdx: keep dump code enabled in dev release too
2016-04-23 18:29:56 +02:00
Gregory Hainaut
a149d6b26f
gsdx: use psm.bpp flag to improve code reading
2016-04-23 18:29:39 +02:00
Gregory Hainaut
dd98a0b913
gsdx: add a depth format flag
2016-04-23 18:28:50 +02:00
Gregory Hainaut
87867beb0e
gsdx-ogl: remove the invalidation of texture
...
It doesn't help the perf and only create overhead (test done on snow engine game)
2016-04-21 21:07:17 +02:00
Gregory Hainaut
3709b5aecc
gsdx: add a small comment to ease code reading
2016-04-21 09:28:44 +02:00
Gregory Hainaut
b5ec683318
gsdx-linux: remove custom resolution from the GUI
...
It would be replaced by a float resolution factor
2016-04-21 09:28:44 +02:00
Gregory Hainaut
821e3ff294
gsdx-ogl: reduce length of debug message
2016-04-21 09:28:44 +02:00
Gregory Hainaut
8217c717f6
gsdx-ogl: require GL_KHR_debug
...
Will reduce the slowdown on debug build
2016-04-21 09:28:44 +02:00
Gregory Hainaut
9598417f42
gsdx-ogl: GL_ARB_copy_image is now mandatory
2016-04-21 09:28:44 +02:00
Gregory Hainaut
99bccc6dff
gsdx-ogl: remove the geometry shader blacklist for Gallium Mesa drivers
2016-04-21 09:28:44 +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
Lauri Kasanen
994c9147f5
textureSW: fix Map with offset
2016-04-19 21:22:53 +03:00
refractionpcsx2
dcb676765e
GSdx: Clean up some warning under windows ( #1289 )
2016-04-14 11:00:58 +01:00
Gregory Hainaut
2e567d6d55
gsdx ogl: update comment
...
something to test in the future
2016-04-14 10:19:18 +02:00
Gregory Hainaut
d129aedfe8
GSdx:vector: add sllv32 and srlv32 for 128 bits op
...
(variable shift)
2016-04-14 10:18:43 +02:00
Gregory Hainaut
8a7184be3f
gsdx: fix hack logic
2016-04-12 11:36:24 +02:00
Gregory Hainaut
6a09fa56fb
gsdx: disable nocturne CRC hack
...
Yeah one less !
2016-04-11 22:41:19 +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
Gregory Hainaut
22a40b65ae
gsdx-ogl: always use 1 for GL_UNPACK_ALIGNMENT
...
Avoid a gl function call for each texture uploads
2016-04-11 12:45:11 +02:00
Jonathan Li
d158d4de51
windows: Move baseclasses to a separate project
...
It saves the buildbots from needlessly recompiling the files for each GSdx
configuration.
2016-04-11 00:22:31 +01:00
Gregory Hainaut
847b57907e
Revert "gsdx-ogl: add a new hack to force anisotropic filtering"
...
This reverts commit 53690cf9d0
.
Quoting user:
For aliasing, the option allow of reduce a little but always very
visible compared with DX11 even with anisotropic OFF, , furthermore
many textures bug added with option activated (predictable but not see
on DX11 with anisotropic ON).
TL;DR doesn't worth it.
Note: it seem to work on DX because DX uses HW texturing in clamp region
mode (and others invalid case). OpenGL uses SW texturing to ensure accuracy
2016-04-10 17:30:49 +02:00
Gregory Hainaut
2941adf364
gsdx ogl: use the new pipeline API
...
Pre build all SW shader into pipeline.
Directly bind the pipeline instead of all pipeline stages. (less work for the driver)
2016-04-10 17:28:05 +02:00
Gregory Hainaut
95e3dcb448
gsdx-ogl: improve the shader program management
...
* keep a reference of program/pipeline created to ease the deletion
* extend a bit the API to support multiple pipeline
Final goal will be to use a pre link pipeline for SW shaders. And uses
the default pipeline for HW shaders.
2016-04-10 17:05:33 +02:00
Gregory Hainaut
395e2f31d0
gsdx-ogl: remove dead code (due to legacy removal)
2016-04-10 14:23:58 +02:00
Gregory Hainaut
3f404c8edb
gsdx-ogl: update shader pipeline intertace to use vs/gs/ps triplet
...
Better to have 1 function calls with 3 parameters rather 3 functions call with 1 parameter.
2016-04-10 14:14:30 +02:00
Gregory Hainaut
53690cf9d0
gsdx-ogl: add a new hack to force anisotropic filtering
...
By default, anisotropic filtering was disabled when textures aren't countinuous.
This hack allows to force it. It can help to reduce aliasing but it would create
unexpected effect on texture boundaries.
Again, someone ought to add the option on Windows too
2016-04-10 13:53:17 +02:00
Gregory Hainaut
9e6cb79f4e
gsdx linux: move depth option as a speed hack
...
Someone ought to add the Windows option too (and DisablePartialInvalidation too)
It might break a couple of games but most of them run better with depth enabled.
2016-04-10 13:22:55 +02:00
Gregory Hainaut
12443da00c
GSdx ogl: ouch the typo exp != exp2
...
Fix some rounding issue on depth effect (shadow in Dot hack games)
2016-04-10 11:31:40 +02:00
Gregory Hainaut
7aaf36d24d
gsdx ogl: add function pointer for framebuffer no attachment extension
...
Could be useful in the future
2016-04-10 11:31:40 +02:00
Gregory Hainaut
7cc13ce99c
gsdx-ogl: only bind the FB to the draw FB
2016-04-10 11:31:40 +02:00
Gregory Hainaut
d533c393b2
gsdx ogl: rely on DSA API
2016-04-10 11:31:40 +02:00
Jonathan Li
fb97de7f79
gsdx:windows: Fix crash on psx side of plugin
...
I forgot it had a psx emu interface.
2016-04-09 19:56:23 +01:00
Gregory Hainaut
b9e8384c11
gsdx-ogl: move the mandatory extension into mandatory section
2016-04-07 22:29:35 +02:00
Gregory Hainaut
121e92a829
gsdx ogl: remove a now useless warning message
2016-04-07 22:28:11 +02:00
Gregory Hainaut
4475c4fe7c
gsdx linux: remove the old extension options
2016-04-07 22:27:33 +02:00
Gregory Hainaut
cef76de547
gsdx ogl: GL_ARB_direct_state_access is now mandatory
2016-04-07 22:27:28 +02:00
Gregory Hainaut
a62019a3fd
gsdx-ogl: found_GL_ARB_buffer_storage is now mandatory
2016-04-07 22:17:22 +02:00
Gregory Hainaut
52e3c3516d
gsdx-ogl: GL_ARB_separate_shader_objects is now mandatory
2016-04-07 22:11:35 +02:00
Gregory Hainaut
f751f70b1e
gsdx ogl: GL_ARB_clip_control is now mandatory
2016-04-07 21:57:54 +02:00
Gregory Hainaut
dfb4b5a339
gsdx-ogl: GL_ARB_texture_barrier is now mandatory
...
(GL4.5 extension)
2016-04-07 21:51:37 +02:00
Gregory Hainaut
1208dbe8c7
cmake: add an option to build the new legacy GSdx plugin
...
+ bump the new one to 1.1.0 (to ease reporting)
2016-04-07 21:46:42 +02:00
Gregory Hainaut
8ccdc05c08
Merge pull request #1217 from PCSX2-Alpha/CRTC_option
...
GSDX : Add an option for CRTC size and some other video mode stuffs
2016-04-07 21:24:46 +02:00
Gregory Hainaut
17886a9808
gsdx-ogl: allow some accurate date when GL_ARB_shader_image_load_store isn't supported
...
Close #1282
2016-04-07 19:29:46 +02:00
Jonathan Li
69a84a2782
gsdx:windows: Don't call GSshutdown in GSconfigure
...
Fixes an issue with the D3D backends crashing if the configure dialog
is accessed and ok is pressed. The D3Dcompiler dll is freed and a null
pointer is dereferenced.
It might break gsdxgui but GSshutdown really should not be called unless
GSdx is shutting down. GSDumpGUI on Windows provides the same (or
better) functionality.
2016-04-07 18:18:36 +01: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
Jonathan Li
e16b367e6e
windows: Workaround weird LoadLibraryEx failures
...
For some reason some Windows 7 systems (most are unaffected) cannot cope
with LoadLibraryEx and return error code 87 - "The parameter is
incorrect".
Switch to using LoadLibrary instead for any case where Windows 7 is
expected to successfully load the requested dll. Potentially Windows
Vista is also affected.
2016-04-06 19:52:59 +01:00
Gregory Hainaut
da9577076c
Merge pull request #1278 from PCSX2/gsdx-EE-read-depth-support
...
gsdx ogl: allow to read the depth buffer
2016-04-06 12:20:16 +02:00
Gregory Hainaut
b8a023d158
gsdx ogl: mark OGL object as final
...
Give the compiler more devirtualization hint
2016-04-05 00:01:43 +02:00
Gregory Hainaut
decac5fd12
gsdx ogl: implement an empty BeginScene
...
Compile will devirtualize it and then remove it during the inline.
2016-04-04 23:32:11 +02:00
Gregory Hainaut
cb279ef321
gsdx ogl: help compiler to devirtualize
2016-04-04 23:12:31 +02:00
Gregory Hainaut
e3787b6b3c
gsdx-ogl: use final qualifier to help compiler
...
Improve Devirtualization optimization
2016-04-04 22:52:59 +02:00
Gregory Hainaut
771583c559
gsdx-ogl: help the compiler to propagate stride constant
...
Optimize various multiplication
Note: potentially we can do it with constexpr but I'm not sure of compiler support
2016-04-04 22:46:31 +02:00
Gregory Hainaut
8943a9db4a
gsdx hw: GS can draw 2 frames in a single framebuffer
...
So let's increase the height. It will increase the memory requirement on some games
v2: try to do it automatically
(not sure it will useful as most game will requires it)
v3: let's back to an hardcoded 1280 size. It generates too much issue
2016-04-04 21:30:40 +02:00
Gregory Hainaut
063d2e568a
gsdx tc: re-implement frame lookup
...
Try to avoid random black screen frame
v2: don't force the preload hack on the frame
It creates a ghost image over FMV
v3: support offset within a frame
2016-04-04 21:30:37 +02:00
Gregory Hainaut
eec74fd963
gsdx hw: Add an alternate draw call for FMV rendering
...
The long story:
Game blits FMV far aways of the RT which is actually the input of the RO texture...
Currently GSdx suffers of 2 bugs.
1/ RT is too small
2/ texture isn't properly updated with the rendered value. Texture is invalidated
but it reads back the pixels from the GS memory whereas the correct
value is located on the GPU.
This commit will replace the standard draw by a manual blit. Therefore it avoid
size issue and bad upscaling issue.
v2:
* Use various copy to be more compatible with dx api
* Move all part of the hack info the BlitFMV function
v3: add log message
2016-04-04 21:29:32 +02:00
Gregory Hainaut
72d43b2e56
gsdx tc: add an invalidation procedure to drop sub rt
...
It will be used in next commit. However, it might not be the best solution
2016-04-04 21:29:32 +02:00
Gregory Hainaut
2ca624c8c6
gsdx tc: implement a read function of Source texture
...
It will be used in the following commit
2016-04-04 21:29:31 +02:00
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
9aea76b0e8
gsdx tc: store a hint on the target size
...
The hint is based on the rendering
2016-04-04 21:29:31 +02:00
Gregory Hainaut
c4ebdd1f37
gsdx ogl: allow to read the depth buffer
...
Unfortunately can't be tested on gs dump
Ought to impact #1276 (Incognito/Eat Sleep Play's games, Nocturne too)
2016-04-03 12:30:14 +02:00
Gregory Hainaut
00643dbdfb
gsdx tc: report unsupported depth read path
...
Help to debug depth issue (aka lighting effects pass through wall)
2016-04-03 11:22:11 +02:00
Gregory Hainaut
ee08a6fc53
Merge pull request #1270 from PCSX2/monolithic-build
...
Monolithic build
2016-04-03 11:20:07 +02:00