Gregory Hainaut
a8a2db8eb1
gsdx mipmap:ogl: extend HW sampler with tri-linear filtering
...
v2:
* use nice enum
* use bilinear info when there is no mipmap (more accurate)
2016-10-13 20:16:38 +02:00
Gregory Hainaut
335d7f3ae5
gsdx: add a nice enum for min filter
2016-10-13 20:16:38 +02:00
Gregory Hainaut
7ea0e90678
gsdx mipmap:ogl: extend shader to support trilinear filtering
2016-10-13 20:16:38 +02:00
Gregory Hainaut
d185a85a07
gsdx ogl: replace simple_sample variable by the opposite shader_emulated_sampler
...
It feels easier to read this way
2016-10-13 20:16:38 +02:00
Gregory Hainaut
ae441e6a2c
gsdx mipmap:HW: Update all valid texture layers
2016-10-13 20:16:38 +02:00
Gregory Hainaut
5d593dd948
gsdx mipmap:HW: save state of both min&max lod values
2016-10-13 20:16:38 +02:00
Gregory Hainaut
15b1d8d3f0
gsdx mipmap:tc: add code to update a single layer of a mipmap
2016-10-13 20:16:38 +02:00
Gregory Hainaut
dbb4bdf59f
gsdx mipmap:ogl: add GL_TEXTURE mipmap support
...
* Allocate more memory for extra layers
* Allow to upload data in any layers
2016-10-13 20:16:38 +02:00
Gregory Hainaut
76bd968c59
gsdx mipmap: extend texture/cache to support a layer parameter
2016-10-13 20:16:38 +02:00
Gregory Hainaut
b695e0065a
gsdx mipmap: use a 3 state option
2016-10-13 20:16:38 +02:00
Gregory Hainaut
9af34cc611
gsdx tc: miss a set scaling call
...
Likely impact issue #83/#694
2016-10-09 13:07:08 +02:00
Gregory Hainaut
3b733930fe
gsdx: UserHacks_TextureInsideRt must be disabled by default
...
Likely a bad copy/past
2016-10-09 12:13:37 +02:00
Gregory Hainaut
344636d88e
gsdx ogl: attach input texture before copy
...
Help to ensure with copy the good texture in debugger
2016-10-08 23:42:39 +02:00
Gregory Hainaut
22ebdcf1cf
gsdx debug: create a nice dump function for kernel gs registers
...
Add missing register
2016-10-08 23:42:39 +02:00
Andreas
ab228c8484
Added missing CRC for Grand Theft Auto San Andreas.
2016-10-08 18:38:50 +03:00
FlatOutPS2
db853b4462
GSdx: Add Jak 2 US CRC to GSCrc list.
...
Fixes issue: https://github.com/PCSX2/pcsx2/issues/1603
2016-10-07 13:14:15 +03:00
Gregory Hainaut
574a807678
gsdx tc: new hack to extract texture from rt
...
UserHacks_TextureInsideRt = 1 (don't look at Jak)
2016-10-07 01:43:04 +02:00
Gregory Hainaut
8873b27eb8
gsdx: let's keep the new clut option off
...
There are still issue with virtua fighter (albeit my dump is better...)
2016-10-06 22:05:03 +02:00
Gregory Hainaut
79666b26c0
gsdx sw: restore the const reference
...
It was removed for PSX hack which was removed a couple of commits ago
2016-10-06 20:02:22 +02:00
Gregory Hainaut
c66004bbb2
gsdx: hidden option to better support dual context clut
...
Option is on by default. Just a safety net in case of regression
Fix clut issue on virtua fighter (SW) and harley davidson (SW/HW).
2016-10-06 19:08:21 +02:00
Gregory Hainaut
9cd4984f7c
gsdx debug: more log
2016-10-06 18:56:31 +02:00
Gregory Hainaut
d827497403
gsdx: let's handle illegal 4 bits format too
...
In doubt if some games use them.
2016-10-05 22:07:49 +02:00
Gregory Hainaut
9b93c07339
gsdx: Handle illegal 8 bits format. Found the most silly GS dev trick
...
Fix Berserk #1526 Well done guys but we're more clever than you ;)
So instead to mask the color channels as any guy that RTFM, they decided to use the illegal 8H frame format
2016-10-05 22:07:43 +02:00
Gregory Hainaut
6fd46eb36a
gsdx: move the validation of the texture format before the draw call
...
Avoid false positive when game write dummy stuff
2016-10-05 22:07:23 +02:00
Pseudonym
a0629587be
gsdx memory: implement read texture of PS GPU24
...
convert the swizzled block as tightly packed 24 bits RGB
Then convert scanline to standard 32 bits RGBA
The HW renderer requires the preload data hack
2016-10-05 21:59:42 +02:00
Gregory Hainaut
1c900e780a
gsdx memory: add a PS GPU 24 bits format
...
Same swizzle as 16 bits. But contains tightly packed RGB pixels.
2016-10-05 21:06:38 +02:00
Gregory Hainaut
1cc696ab31
gsdx hw: update TEST.ATE field after ATE optimization
...
Otherwise DoFirstPass/DoSecondPass will give you result based on pre-ATE optimization
Close #1607
2016-10-05 09:43:24 +02:00
Gregory Hainaut
3653a7746a
gsdx psxmode: small hack to "see" video until we found a better solution
2016-10-05 09:43:24 +02:00
Gregory Hainaut
677f890c5c
gsdx debug: static GSState::s_n
...
This way you can access the current draw call anywhere. Very useful for debug.
2016-10-05 09:43:24 +02:00
Gregory Hainaut
61333ecb40
gsdx debug: trace register access
...
I didn't include high frequency register such as vertex stuff
main goal is to give the possibility to trace the texture/clut update
2016-10-05 09:43:24 +02:00
Gregory Hainaut
1b8d6a38e7
Merge pull request #1586 from PCSX2/gsdx-refresh-gui-options
...
Gsdx refresh gui options
2016-10-04 18:30:48 +02:00
Gregory Hainaut
354aa6831b
gsdx ogl: brain hang in the middle of the line
...
Only impact if bilinear is forced
2016-10-03 18:52:02 +02:00
Gregory Hainaut
5b72fab2e4
gsdx ogl: depth regression from 866173a481
...
Only mask depth if the min value is too big
Issue #1602
2016-10-03 18:32:54 +02:00
Gregory Hainaut
3be055a366
gsdx hw: remove code to detect an effect
...
It was a tentative to emulate GTA radiosity but the new hack is more generic
2016-10-02 18:29:23 +02:00
Gregory Hainaut
49c44db635
gsdx:dx: make filtering right
...
WMS/WMT 2 is the region clamping mode.
Hw unit can't emulate it right so it can give you bad filtering (Fix #1025 )
Note: I only did the fix because I wanted to remove the TEXA hack. Otherwise
it is still recommended to use openGL
2016-10-02 18:21:52 +02:00
Gregory Hainaut
7f4791fa85
gsdx hw: improve no_ds detection
...
Support ZTST_NEVER as no depth read => psx mode speed boost
Use zm/fm to reduce further depth lookup
2016-10-02 18:21:52 +02:00
Gregory Hainaut
c3ac3ecbe7
gsdx hw: move try alpha test at the beginning
...
Will allow to use alpha test optimization to better optimize depth lookup
Require to do clut handling before
2016-10-02 18:21:52 +02:00
Gregory Hainaut
dc365e066d
gsdx tc: remove old plain TEXA hack
...
It must work fine without it now.
From the google code comments:
It would be nice to test those games
* Ar Tonelico 2 (line in sprite regression?)
* breath of fire dragon quarter (overlayed user interface in the game)
v2: update Dx code to use the good format
2016-10-02 18:21:52 +02:00
Gregory Hainaut
cf13cccb1e
gsdx: avoid useless spamming of INVALID PSM in release build
2016-10-02 18:21:41 +02:00
Gregory Hainaut
955a69b16e
gsdx ogl: fix GT4 regression (wrong texture on timing)
2016-10-02 12:16:48 +02:00
Gregory Hainaut
c7c6566bca
gsdx hw: of course the full Jak series will kill me
2016-10-02 11:57:09 +02:00
Gregory Hainaut
b6638d4eec
gsdx hw: forgot to comment an unused variable
...
Keep the code in case, we better solution is found to validate the depth/frame format
2016-10-02 10:18:15 +02:00
Gregory Hainaut
3996fbe365
gsdx hw: reduce conplexity around TryAlphaTest
...
* As sw renderer, don't bother to bypass it when it is ATST_ALWAYS
* Don't update the ATE register value
=> It is a really bad idea. Next draw call will be wrong if TEST register isn't written.
The TryAlphaTest context could have been updated
2016-10-01 19:20:49 +02:00
Gregory Hainaut
c5f086b385
gsdx ate: separate the code that depends on TEST.AFAIL
...
Easier to read and allow a switch optimization
Add a shortcut for the common ATST_ALWAYS case
2016-10-01 19:20:38 +02:00
Gregory Hainaut
4612b79575
gsdx: add a warning on vertex trace
...
Due to a division by 2, depth lsb bit is always 0
I'm not sure it is critical but let's keep a note for the future
2016-10-01 19:16:44 +02:00
Gregory Hainaut
d1e07295e7
gsdx linux: add the missing gui option for unscale point/line primitive
2016-10-01 19:16:44 +02:00
Gregory Hainaut
5e1064da55
gsdx: remove the safe accurate blending hack
...
V2: Integrate Flatout patch to do the Window side
2016-10-01 19:15:52 +02:00
Gregory Hainaut
f77c1900fa
gsdx tc: always clear a new depth buffer
...
Random data isn't a good idea for a depth buffer. It can cause flickering. (Jak2 FMV)
Hopefully it won't impact too much the speed.
2016-10-01 19:00:17 +02:00
Gregory Hainaut
9c84712640
gsdx hw: enable palette read back on Jak2
2016-10-01 18:47:21 +02:00
Gregory Hainaut
5d93a392e4
gsdx hw: xman half screen correction
2016-09-30 22:25:24 +02:00
Gregory Hainaut
29c25bc375
gsdx clut: disable some assertions often fired
2016-09-30 22:24:38 +02:00
Gregory Hainaut
34686394a6
gsdx hw: add an hack for Jak3
...
I'm disappointed...
Read back palette written by the GPU. Avoid strange color on the skin.
2016-09-30 19:22:16 +02:00
Gregory Hainaut
df2f8684d6
gsdx: improve TC cache log
2016-09-30 19:18:58 +02:00
Gregory Hainaut
8d24aa2b39
gsdx: GoW2 half screen bug
...
... Seriously ...
2016-09-30 19:15:25 +02:00
Gregory Hainaut
8d4fadb3c8
Revert "gsdx state: TEX0 write behavior might depends on the context"
...
This reverts commit b34243fa7b
.
Unfortunately we have a regression on GT4. I'm doomed
2016-09-28 20:00:56 +02:00
Gregory Hainaut
90ad9cf668
gsdx hw mipmap: tune the rounding + remove previous hack
...
GS really uses an invalid texture located at 0.
Improve the rounding for R&C. The idea is to avoid the corner case were only
the corner of the triangle touch the 7/16 edge.
2016-09-28 19:41:12 +02:00
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
fea31f7422
gsdx: don't use virtual when it is useless
2016-09-28 19:41:11 +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
e0961d81a0
gsdx HW: use after free crash
...
Free bt
3 0xe676d194 in ~Source ../plugins/GSdx/GSTextureCache.cpp:1526
4 0xe676d194 in GSTextureCache::SourceMap::RemoveAt(GSTextureCache::Source*) ../plugins/GSdx/GSTextureCache.cpp:1990
5 0xe676f0fe in GSTextureCache::IncAge() ../plugins/GSdx/GSTextureCache.cpp:1022
Use bt
0 0xe6772a83 in GSTextureCache::LookupSource(GIFRegTEX0 const&, GIFRegTEXA const&, GSVector4i const&) ../plugins/GSdx/GSTextureCache.cpp:204
1 0xe66b0c9f in GSRendererHW::Draw() ../plugins/GSdx/GSRendererHW.cpp:579
2 0xe66fb43e in GSState::FlushPrim() ../plugins/GSdx/GSState.cpp:1509
Hypothesis the m_map array of list contains an invalid pointer
It is populated GSTextureCache::SourceMap::Add based on the coverage. The coverage is based on the offset.
So offset is potentially wrong. As mipmap code hack the offset value. It would be a nice culprit.
This commit avoids a potential bad transition between MIPMAP (which
overwrite the "offset") and the base layer (which wrongly keep an old "offset")
Conclusion, pray for my soul as it is very hard to reproduce
2016-09-26 20:34:38 +02:00
Gregory Hainaut
04d82d8127
gsdx: size doesn't count but 0.625 might change your life :p
2016-09-26 19:42:07 +02:00
Gregory Hainaut
be9995bd1e
gsdx mipmap: improve robustness to avoid potential crash
2016-09-26 09:27:03 +02:00
Gregory Hainaut
ebb2a8ad5a
gsdx debug: Add DISABLE_WIP_ASSERTION
...
To easily disable assertion on codes that only require investigation
2016-09-25 20:00:51 +02:00
Gregory Hainaut
ca4f265ce6
gsdx debug: dump mipmap register could be useful now :)
2016-09-25 20:00:51 +02:00
Gregory Hainaut
ef9a144437
gsdx hw: extra trick for the mipmap
...
Ratchet & Clank (the third) uses an address of 0 for invalid mipmap.
It would be very awkward to put the middle layer of texture in start of
memory. So let's use this information to correct the lod.
It make the game more robust on the lod rounding
2016-09-25 11:54:00 +02:00
Gregory Hainaut
78b2848622
gsdx: factorize the TEX0 generation for mipmap
2016-09-25 11:51:48 +02:00
Gregory Hainaut
ccd9ce1728
gsdx hack: move tales of legendia hack to full move
...
Also remove the OI hack which is handled by the generic double half clear
2016-09-25 10:17:08 +02:00
Gregory Hainaut
e229dc1549
gsdx hack: move Resident Evil 4 to full level
...
The CRC hack removes the fog, without the hack the screen turns green with D3D,, but the fog emulates correctly on OGL with hardware depth.
2016-09-25 10:13:21 +02:00
Gregory Hainaut
ad8a84a532
gsdx hw: reduce hack of Spyro series
...
Based on the comment, it ought to be fixed with previous commit.
2016-09-25 10:08:55 +02:00
Gregory Hainaut
7f871b0cc6
gsdx hw: remove various CRC hack that ought to be fixed with previous commit
...
* SpidermanWoS
* TyTasmanianTiger
* TyTasmanianTiger2
* DigimonRumbleArena2
* XmenOriginsWolverine
* CallofDutyFinalFronts
* GoW2 (only in openGL)
2016-09-25 10:08:54 +02:00
Gregory Hainaut
1e343084e2
gsdx hw: group the double half clear with gs mem clear hack
...
It avoid redundant check of the GS context
You can disable the extra clear with UserHacks_DisableGsMemClear = 1
2016-09-25 10:08:54 +02:00
Gregory Hainaut
6c6ed5f443
gsdx ogl: trigger the special RW framebuffer shader when only Alpha is written ( #1588 )
...
* gsdx ogl: trigger the special RW framebuffer shader when only Alpha is written
It will work for both Jak and Ratchet&Clank and without CRC
2016-09-25 10:05:44 +02:00
Gregory Hainaut
6e2bf98d5f
gsdx hw: round mipmap lod value
...
Will avoid some corruption based on distance/angle
2016-09-24 20:05:39 +02:00
Gregory Hainaut
719982e4a3
gsdx hw: forget to update a parameter
...
OMG, fixes various mipmap issues
2016-09-24 18:57:47 +02:00
Gregory Hainaut
76494e5f9c
gsdx hw: add an userhack for hw mipmap
2016-09-24 12:39:31 +02:00
Gregory Hainaut
e38aba0dff
gsdx: rename SW texture dump filename
...
* Use texraw for the unconverted texture (keep index fmt)
=> avoid bad filename order with the multiple texture layers
* add the real mipmap address
* Use a nice string format
2016-09-24 09:15:40 +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
b00ae974d2
gsdx ogl: fix bad interaction between accurate blending and geometry shader
...
Recent optimization allow to use triangle to render sprite even when gs is supported
close #1574
2016-09-20 09:30:24 +02:00
Gregory Hainaut
b91bd3ea01
gsdx dx/gl: fix potential bug in alpha test handling
...
Depth test must remain disabled if write were masked.
Bug was detected on ICO (sea/sky) but the previous commit removes
the wrong ATE draw call.
2016-09-19 08:56:49 +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
38b77397e0
gsdx hw: remove custom Ty Tasmanian Tiger / Simposons OI hack
...
Replaced by the generic OI_DoubleHalfClear. If OI_DoubleHalfClear is fast/safe enough, it
will enabled by default in the future.
2016-09-18 18:50:16 +02:00
Gregory Hainaut
6558317a7e
gsdx: s/m_eq.xzyf & 4/m_eq.z/
...
Much better this way
2016-09-18 18:50:15 +02:00
Gregory Hainaut
7a40b27931
gsdx CRC: move GTA hack to full level
...
You can now emulate the radiosity effect with the UserHacks_AutoFlush hack.
2016-09-18 18:50:15 +02:00
Gregory Hainaut
0f387a8e3c
Merge pull request #1535 from PCSX2/clang-tidy-macro-parenthesis
...
clang-tidy: use parenthesis around macro parameters
2016-09-18 18:48:04 +02:00
Gregory Hainaut
310f13a2f7
gsdx ogl: only use geometry shader to convert big enough draw call ( #1554 )
...
gsdx ogl: only use geometry shader to convert big enough draw call
The purpose of geometry shader is to reduce bandwidth (72 bytes by sprite)
and CPU load.
Unfortunately it increases CPU load due to extra shader validations.
So geometry shader will only be enabled for draw call with more than
16 sprites (arbitrarily, smallest number before shadow hearts plummet)
v2: don't disable geometry shader in replayer.
It is easier to spot sprite rendering and to manually read vertex info.
2016-09-18 16:58:02 +02:00
Gregory Hainaut
2a60264e40
gsdx replayer: improve error message when file is corrupted
2016-09-18 16:52:35 +02:00
Gregory Hainaut
6e6eae7844
pcsx2:gsdx:spu2x: use parenthesis around macro parameters
...
For safety reasons.
2016-09-18 16:13:55 +02:00
Gregory Hainaut
b1d446895b
GSdx: replace IsTopLeftAligned macro with a function
2016-09-18 16:13:28 +02:00
Gregory Hainaut
5ef2d538a0
gsdx hw: only keep a single half clear implementation
2016-09-18 13:16:59 +02:00
Gregory Hainaut
a0c1719695
gsdx hw: DoC takes 3
...
Add support for 16 bits format too. Fix shadows.
2016-09-17 12:06:43 +02:00
Gregory Hainaut
ebdf54a60b
gsdx sw: don't enable auto flush hack in replayer
...
Otherwise we don't have same number of draw call in HW/SW which is
awful to compare
2016-09-17 12:05:05 +02:00
Gregory Hainaut
3546d54e3b
gsdx hw: improve the vertical half clear for DoC
...
Previous assumption that crazyness was used to clear the buffer is wrong.
It was also used to write a constant color to the buffer.
2016-09-17 10:34:35 +02:00
Jonathan Li
4d5e051387
gsdx: Fix missing "\n" in rc file
...
It stops Visual Studio from asking to normalise the line endings
everytime the resource editor is used.
2016-09-16 23:42:54 +01:00
Jonathan Li
91b2e5bdbb
Merge pull request #1564 from FlatOutPS2/master
...
GSdx: Add Windows UI options for HW hacks
2016-09-16 23:35:45 +01:00
Gregory Hainaut
7b9654f164
gsdx hw: CRC based solution to solve half screen issue on FFVII Dirge Of Cerberus
...
The trick is that the depth buffer is actually the right of the frame buffer
2016-09-17 00:02:32 +02:00
FlatOutPS2
55b0be36cd
GSdx: Add cancel button to Hacks dialog
...
Add a cancel button to the Hacks dialog to make it easier for the user
to exit the window without making changes.
2016-09-16 23:22:13 +02:00
FlatOutPS2
5420fcaf3a
GSdx: Add Windows UI options for HW hacks
...
Add UI options for Auto Flush and Unscale Point Line HW hacks.
2016-09-16 23:19:05 +02:00
Gregory Hainaut
3994141d40
gsdx sw: always enable the auto flush hack on the SW renderer
...
There are enough option. Will remove it if too slow.
Positively impact Jak, GTA, Battlefield 2
2016-09-15 17:24:40 +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
4796803c33
pcsx2: Remove == true/false for boolean logic ( #1556 )
...
As discussed in #1553
Clang Tidy reports goes from 156 to 9.
Remain some macro in spu2x + a deadcode line
2016-09-10 20:08:14 +02:00
Jonathan Li
72d3e4e03f
windows: Add freetype to solution and link to GSdx
2016-09-10 12:36:56 +01:00
Gregory Hainaut
ccf198a80b
gsdx ogl: fix a regression on Okami
...
Strangely the game uses large texture to handle texture buffer.
I think it plays with WMS/WMT. I'm not sure texture shuffling is 100%
correct here. But without it, it's completely broken.
2016-09-09 21:51:23 +02:00
Gregory Hainaut
8c1722faa2
gsdx: add a note that Jak shadows can be handled with HW GL without auto flush hack
2016-09-09 21:08:15 +02:00
Gregory Hainaut
64a97483fb
gsdx: add Jak3 US too
2016-09-09 21:05:00 +02:00
Gregory Hainaut
de480ec0f5
gsdx: add crc hack for Jak
...
* 0x9C712FF0, Jak1, EU
* 0x472E7699, Jak1, US
* 0x2479F4A9, Jak2, EU
* 0x12804727, Jak3, EU
* 0xDF659E77, JakX, EU
Please report me the CRC of the US version too so I can add them.
Please test the shadows rendering (openGL HW + accurate blending at least basic)
2016-09-09 19:44:04 +02:00
Gregory Hainaut
d27d2dd520
fix compilation issue
2016-09-09 00:11:02 +02:00
Gregory Hainaut
c2b67ccb78
gsdx ogl: implement an alternate shader for Jak Shadows
...
The game sets the framebuffer as an input texture. So I did the same for
openGL. Code is protected with a CRC. It is working because the game want to sample
pixels.
For the record, I tested it GTA too, it doesn't work as expected because
the game will resize the framebuffer to a smaller one. So you don't have
the guarantee that pixel will be read before a data write.
Note: it requires at least accurate blending set on basic
Note: I need CRC of all Jak games that suffers of this issue. Thanks you :)
2016-09-08 23:58:13 +02:00
Gregory Hainaut
f9d8cb97c0
Merge pull request #1508 from PCSX2/gsdx-allow-sso-amd
...
Finally AMD delivered the fix to support separate shader object !!!
2016-09-08 21:47:32 +02:00
Gregory Hainaut
6ee841319f
gsdx: help stupid compiler to allow 32 byte move
...
Default copy-constructor is eight 32 bits move
GSRendererOGL::Lines2Sprites code shrinks from 510B to 398B
(loop of the function 296B => 181B). Hopefully it will reduce the cost
to convert line to sprite on the CPU (i.e. when geometry shader is disabled)
2016-09-08 20:01:05 +02:00
Gregory Hainaut
aba0c733cd
gsdx linux: add a gui check box to control previous hack
2016-09-08 17:34:28 +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
bcb951077d
gsdx: c_str() is useless when parameter is a string
...
Reported by clang tidy
2016-09-07 22:10:50 +02:00
Gregory Hainaut
145d6e29c2
gsdx: increase the allocation of the GS memory
...
GS memory is only 4MB but rendering is allowed to be 2048x2048
with 32 bits format (so 16MB). Technically the frame/depth buffer can start
at the end of the GS memory. Let's not waste too much memory.
Fix crash with BASARAX
(game draws a 2048x1664 32 bits area)
2016-09-07 08:34:24 +02:00
Gregory Hainaut
c638e5ec87
gsdx debug: use a pretty format name when dumping texture
...
Much faster to read the format on the file name :)
+ remove a couple of useless ifdef
2016-09-07 08:34:24 +02:00
Gregory Hainaut
6abd806539
gsdx perf: print frame time distribution
2016-09-07 08:34:24 +02:00
Gregory Hainaut
cedc4f241d
gsdx hw: add a crc hack for Dragon Quest & Final Fantasy in Itadaki Street
...
The hack only fix the HW renderer but not the SW renderer. However I'm not sure
the issue is from GSdx.
The hack will disable alpha test that used to generate empty draw call.
2016-09-04 19:41:31 +02:00
Gregory Hainaut
bb50b3419e
Merge pull request #1542 from PCSX2/gsdx-texture-transfer-motocross
...
gsdx: save the blit buffer register when a transfer is started
2016-09-04 16:55:08 +02:00
Gregory Hainaut
52a2bb5524
gsdx ogl: disable texture shuffle when a render a basic sprite
...
Fix shadow issue on "Shadow of Memories"
2016-09-03 12:18:52 +02:00
Gregory Hainaut
79209c31bf
gsdx ogl: avoid bad logging of framebuffer/texture overlap
2016-09-03 12:18:51 +02:00
Gregory Hainaut
a123e65185
gsdx sw: handle the invalidation of the palette when written by the GS
...
Manual gives all setup to upload a palette from the host. But nothing forbid to render
directly in the palette buffer. (GS rule nb 1, there is no rule ^^)
Fix Virtua Fighter 2 dark colors
However I'm not sure we can fix HW renderer. Rendering is done on the GPU but palette
handling is done on the CPU... So we need to read back data (ouch, and slow). A quick
test didn't get the expected results. Potentially there are others bugs (aka not gonna
happen on the HW renderer)
2016-09-03 00:21:56 +02:00
Gregory Hainaut
d01194da0b
gsdx sw: help debug
...
* quick way to disable verbose fixed tex0
* use palette address/format when the palette is dumped :)
2016-09-03 00:10:23 +02:00
Gregory Hainaut
6323268f40
gsdx tc: reset dirty alpha flag when we lookup a frame
...
Fix black skin regression for haunting ground (at least on my gs dump)
2016-09-02 21:31:13 +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
b546d096bd
Finally AMD delivered the fix to support separate shader object !!!
...
v2: blacklist AMD driver from the start of 2016
Please note that it is highly recommended to upgrade to a stable&working driver
2016-09-01 09:47:57 +02:00
Gregory Hainaut
448fee76c1
gsdx ogl: move GS setup in SetupIA
...
Fix regression when geometry shader is disabled
2016-09-01 09:47:46 +02:00
Gregory Hainaut
165bcf5662
Merge pull request #1539 from FlatOutPS2/DX
...
GSdx DX: extend ATE to better support additional corner case DX port
2016-08-29 11:39:22 +02:00
Gregory Hainaut
19a9d639b1
Merge pull request #1538 from PCSX2/gsdx-improved-ate
...
gsdx ogl: extend ATE to better support additional corner case (issue …
2016-08-29 11:38:57 +02:00
Gregory Hainaut
da688114f4
Merge pull request #1522 from PCSX2/gsdx-issue-1438
...
gsdx tc: don't partially invalidate small target
2016-08-28 16:51:25 +02:00
Gregory Hainaut
e4337b6631
glsl2h: add input files in the header
...
Close #1404
2016-08-28 16:31:35 +02:00
Gregory Hainaut
a1cdf7189a
gsdx tc: don't partially invalidate small target
...
It creates a regression on game that uses a small temporary target to
upload textures of various sizes. Inital code was done to handle direct
frame write (background, FMV) so big target
2016-08-28 16:24:02 +02:00
FlatOutPS2
e5c6b2e952
GSdx DX: extend ATE to better support additional corner case DX port
...
Port for Direct3D renderers of PR #1538 .
2016-08-28 15:13:15 +02:00
Gregory Hainaut
7103707aeb
gsdx: new linux option linear_present
...
Purpose is to control the filtering when final image is displayed on the screen
Could improve the sharpness of the output in some games (ofc, it will be pixelated)
2016-08-27 19:23:12 +02:00
Gregory Hainaut
2b925e0103
gsdx ogl: extend ATE to better support additional corner case (issue #1499 )
...
When depth primitive is constant and depth test is greater or equal, we can
execute the depth write after color (depth status will only depends on the initial
value)
New case for RGB_ONLY ate:
If the blending equation uses a fixed alpha or a source alpha. We can postpone the alpha write
in a 2nd pass.
If depth can also be postponed, we can guarantee the order of correctness of the value.
1st pass => do RGB
2nd pass => do Alpha & Depth
It fixed Stuntman letter rendering :) Remaining of the game is still broken :(
2016-08-27 14:46:10 +02:00
Gregory Hainaut
b6693c4345
gsdx dx/gl: fix depth optimization
...
4th bit is the fog value, not the depth
2016-08-27 13:57:39 +02:00
Gregory Hainaut
411a25b610
Merge pull request #1531 from PCSX2/clang-tidy-empty-instead-of-size
...
pcsx2|common|gsdx: use empty() instead of .size() ==/!= 0 check
2016-08-26 10:05:01 +02:00
Gregory Hainaut
5a1cb00a07
Merge pull request #1517 from FlatOutPS2/DX
...
Gsdx alpha test improvement DX
2016-08-25 09:25:19 +02:00
Gregory Hainaut
1fb2c66a21
gsdx ogl: Unscale line
...
Line thickness will be increased to N pixels (N is the upscaling factor).
Code will also be enabled by UserHacks_unscale_point_line = 1
2016-08-22 18:18:12 +02:00
Gregory Hainaut
018895067b
gsdx ogl: restore code to unscale point
...
enabled by UserHacks_unscale_point_line = 1
Point will be transformed into a NxN square sprite. (N is the upscaling factor)
2016-08-22 18:18:12 +02:00
Gregory Hainaut
1a8825b374
pcsx2|common|gsdx: use empty() instead of .size() ==/!= 0 check
...
Enhance readability reported by clang tidy
2016-08-21 17:20:13 +02:00
Gregory Hainaut
8ee2d3d367
gsdx: use static assert when possible
...
reported by clang tidy
2016-08-21 15:22:09 +02:00
Jonathan Li
2b2042e1c2
gsdx: Allow screenshot compression level to be changed
...
At higher resolutions it takes too much time to save a screenshot at the
maximum compression level. So let's allow the user to set the
compression level.
This re-uses the png_compression_level setting. The default compression
level is 1 for speed, but if the user wishes to increase the compression
level (without using an external tool) and doesn't mind if the
screenshot takes more time to save then they can increase the
compression level up to a maximum of 9 (which can take quite a while).
Fixes #1527 .
2016-08-20 14:01:24 +01:00
Gregory Hainaut
d6b834e8af
gsdx hw: don't execute blit fmv with target
...
Avoid invalid operation due to depth buffer
2016-08-20 12:56:30 +02:00
Gregory Hainaut
fa826b3167
gsdx tc: check compatible bit when wrote in middle of target
...
All maths are wrong otherwise. Fix half screen issue in WRC
2016-08-20 11:57:15 +02:00
Gregory Hainaut
a49b3c9bf6
gsdx tc: log more stuff on texture cache dirty & frame format
2016-08-20 11:52:22 +02:00
FlatOutPS2
87eed3965e
GSDx GSRendererDX code improvement
...
Replace local copies context and env with m_ prefix originals.
2016-08-19 16:02:49 +02:00
FlatOutPS2
c5cd716c20
Gsdx alpha test improvement DX
...
Port for the DX renderers of the alpha test improvement for OGL created by gregory38.
2016-08-19 15:59:54 +02:00
Gregory Hainaut
765b68458a
gsdx: improve logging
...
Don't enable UpdateValidity print by default (+20~25% on log size)
Only useful in rare cases
2016-08-17 21:23:06 +02:00
Gregory Hainaut
19ceea4f1e
Merge branch 'strict-aliasing'
2016-08-17 18:53:08 +02:00
Jonathan Li
d36002a02a
gsdx:cmake: Use PNG_LIBRARIES instead of PNG_LIBRARY
...
PNG_LIBRARIES adds both libpng and zlib to the command line.
PNG_LIBRARY only adds libpng to the linker command line, and the cmake
documentation also suggests not to use it.
2016-08-16 20:35:21 +01:00
Gregory Hainaut
fa249a3f78
gsdx ogl: don't rely on the Z value in m_vt
...
Value seems wrongly rounded and you can't distinguish 0xFFFF from 0xFFFE
Instead check that depth is constant for the draw call and the value from the vertex buffer
Fix recent regression on GTA (and likely various games)
2016-08-16 07:30:52 +02:00
Gregory Hainaut
5c7e2432bd
gsdx-ogl: improve alpha test for GTA vice city (letters)
...
I don't understand why but it seems depth is rounded down even in 16 bits.
So uses 0xFFFE to enable ate_all_color_then_depth in 16 bits format too :)
2016-08-15 11:38:07 +02:00
Gregory Hainaut
5fbf702500
gsdx ogl: new optimization to bypass the alpha test
...
In FB_ONLY mode the alpha test impacts (discard) only the depth value.
If there is no depth buffer, we don't care about depth write. So alpha
test is useless and we can do the draw with a single draw call and no program
switch
2016-08-15 11:35:24 +02:00
Gregory Hainaut
b62859ffa2
gsdx ogl: only enable the alternate alpha test in FB_ONLY
...
RGB_ONLY requires to handle the alpha channel in the alpha test
2016-08-15 11:25:19 +02:00
Gregory Hainaut
0417a10483
gsdx: allow strict aliasing optimization
2016-08-14 21:01:40 +02:00
Gregory Hainaut
2e7fab7813
gsdx sw: avoid aliasing issue, clear function was wrong anyway
...
Value must be un-normalized. Function is only used with 0.0 so
API was updated to only use the 0 case.
2016-08-14 21:01:09 +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
447e0d0336
Merge pull request #1514 from PCSX2/gsdx-nouveau-driver
...
Gsdx alpha test improvement
2016-08-14 20:29:09 +02:00
Gregory Hainaut
15db7eeb81
gsdx: use correct format in printf
...
u => unsigned
d => signed
zu => size_t
2016-08-13 12:48:35 +02:00
Gregory Hainaut
0a1454ff6c
gsdx: use prefix increment operator for non-primitive type
...
I think compiler is clever enough to optimize the code but it won't hurt
and it reduces the number of cpp check warning.
2016-08-12 23:11:26 +02:00
Gregory Hainaut
dc2864ad7a
gsdx hw: avoid a null deferenced false-positive in coverity
...
It is a false positive because it supposes that PRIM->TME is both true and false.
It is the first Schrodinger's variable ;)
2016-08-12 23:02:06 +02:00
Gregory Hainaut
1a09712f89
gsdx: init m_custom_width/height to a default value
...
Avoid useless warning on coverity
2016-08-12 22:48:20 +02:00
Gregory Hainaut
c41cf6c444
gsdx: init variable in constructor
...
CID 168626 (#1 of 1): Uninitialized scalar field
uninit_member: Non-static class member m_end_block is not initialized in this constructor nor in any functions that it calls.
2016-08-12 22:45:17 +02:00
Gregory Hainaut
41afd85a5d
gsdx sw: fix GCC warning enumeral and non-enumeral type in conditional expression
2016-08-12 19:30:14 +02:00
Gregory Hainaut
88b7470c07
gsdx: use const qualifier to avoid gcc (false positive) warning
...
variable might be clobbered by ‘longjmp’ or ‘vfork’
Only remains warning for 2 variables: success & image
2016-08-12 19:30:14 +02:00
Gregory Hainaut
19e992869a
Merge pull request #1512 from PCSX2/gsdx-dynamic-thread-height
...
gsdx sw: add extrathreads_height to control the quantity of pixels pr…
2016-08-12 15:52:13 +02:00
Gregory Hainaut
332ef5892b
gsdx: replace hardcoded constant with nice enum
2016-08-11 22:30:34 +02:00
Gregory Hainaut
8b94320524
gsdx ogl: implement another algo to handle alpha test
...
Fix rendering issue on letters on Kengo/burnout 3/...
Default algo will execute the alpha test in 2 passes. However due to blending
you can't handle accurately the color.
Fortunately for us, the rendering uses an always pass depth test so you
can execute first all the color rendering (which doesn't depends on the alpha test)
And then the depth part which depends on the alpha test.
2016-08-11 21:15:17 +02:00
Gregory Hainaut
866173a481
gsdx ogl: move zbuffer emulation code into a dedicated function
...
* Code was factorized a bit with the help of max_z
* Add an extra optimization if test is ZTST_GEQUAL and min z value is
the biggest value. Z test will always be pass.
Note: due to float rounding (23 bits mantissa vs 24 bits depth) the test
is done against 0xFF_FFFE and not 0xFF_FFFF. It is wrong but GPU will
also use float so impact will be null.
2016-08-11 21:14:58 +02:00
Gregory Hainaut
1fa9e3fc93
gsdx ogl: align shader self test to atst previous change
2016-08-10 11:30:13 +02:00
Gregory Hainaut
74822d6ba3
gsdx ogl: rework atst handling
...
* Move the rounding operation in the constant buffer
* Merge less with less equal. And merge greater with greater equal
Need test
2016-08-10 11:30:11 +02:00
Gregory Hainaut
9a188a87c2
gsdx ogl: move ATST emulation in a dedicated function
...
Future commit will try to reduce the number of Alpha Test possibilities
2016-08-09 20:53:44 +02:00
Gregory Hainaut
fb2182dd9b
gsdx small nitpick
2016-08-09 15:15:30 +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
Jonathan Li
af60501fb6
windows: Remove unused solution files and property sheets
...
The solution files are unused and for ancient Visual Studio versions -
GSDumpGUI has its own solution file, and bin2cpp is included in the main
solution file.
The property sheets have either fallen out of use or were never used in
the first place.
2016-08-04 23:09:08 +01:00
Jonathan Li
869f4d1898
gsdx: Only set ini path in GSdxApp::Init() if it's empty
...
Fixes a regression introduced by 46ba9aa117
,
where the Linux GS replayer would always use the options in inis/GSdx.ini
(or use the default options if that doesn't exist) to replay the dump,
instead of using the GSdx.ini from the specified ini folder.
2016-08-04 00:53:50 +01:00
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
41bede60eb
gsdx replayer: fix broken init in replayer
...
"regression" from previous defered init
2016-08-03 11:57:56 +02:00
Gregory Hainaut
27f313ee16
gsdx hw: limit OI_GsMemClear to large clear
...
Help to reduce the speed impact
2016-08-03 11:23:23 +02:00
Jonathan Li
f978f9a07d
Merge pull request #1477 from turtleli/gsdx-defer-init
...
gsdx: Avoid illegal instruction crash on older CPUs
2016-08-02 23:00:19 +01:00
Gregory Hainaut
16affc9ef4
gsdx tc: potentially fix a regression
...
Update done on f712c5c6d0
Previous code use the size of the draw to compute latest block. I
don't know why I use .x/.y which are the origin offset so the start of the block.
2016-08-02 15:35:28 +02:00
Jonathan Li
44f90efb93
gsdx:psx: Fix illegal instruction crash on old CPUs
...
Check the instruction set first in GPUinit, GPUconfigure and GPUtext
to prevent unsupported vector instructions from being executed.
Move the vector initialisation in GPUinit to a separate function - it
avoids a vzeroupper instruction.
2016-08-01 19:38:23 +01:00
Gregory Hainaut
92ae8a5be7
gsdx sw: print current draw call of GetSizeFixedTEX0
...
To easily detect compare with hardware renderer
2016-07-31 13:19:38 +02:00
Gregory Hainaut
1ea83ba3a7
gsdx debug: log current area of the draw
...
This way it is easier to see which part of the texture is read, and which part
of the framebuffer is updated
2016-07-31 13:19:38 +02:00
Adam Diffin
6376e8d6e7
Just a simple grammar fix. ( #1489 )
2016-07-31 01:23:35 +01:00
Gregory Hainaut
140fe74ca2
gsdx ogl: fix bad blending regression
...
(when accurate blending is disabled)
Regression was introduced in 29c97a9bf2
(11th June)
2016-07-30 09:59:53 +02:00
Gregory Hainaut
242ac26299
Merge pull request #1485 from ssakash/HPO_Custom
...
GSDX-TextureCache: Port Half pixel offset hack for custom resolutions
2016-07-29 15:07:02 +02:00
FlatOutPS2
02b0451d3c
GSdx: Star Ocean 3 depth issue fix
...
Fixes issue #1475
2016-07-29 12:13:26 +02:00
FlatOutPS2
91e07727e3
GSdx Add missing CRC hacks
2016-07-29 12:12:52 +02:00
Akash
dbad57b8e8
GSDX: Silence an implicit conversion warning
...
OMSetBlendState() doesn't accept passing a float value as it's argument
(AKA actual parameter).
2016-07-28 18:58:06 +05:30
Akash
47f69f694a
GSDX-TextureCache: Port Half pixel offset hack for custom resolutions
2016-07-28 18:45:23 +05:30
Gregory Hainaut
620876e0e7
gsdx: fix compilation error with ICC
...
just require the -restrict compilation flag
2016-07-28 11:01:28 +02:00
Jonathan Li
a9f9c1406c
Merge pull request #1474 from turtleli/windows-64-bit-fixes
...
Windows 64-bit compile fixes
2016-07-28 00:19:04 +01:00
Jonathan Li
7e30d16797
gsdx: Use char array instead of string for name
...
"static string str;" causes a SIGILL signal on a "Nehalem" (SSE4.2)
QEMU VM when compiled with GCC 6.1.1.
2016-07-27 23:34:16 +01:00
Jonathan Li
46ba9aa117
gsdx: Defer GSdxApp initialisation on Linux only
...
vector push_back causes a SIGILL signal on a Nehalem (SSE4.2) QEMU VM
when compiled with GCC 6.1.1.
However, an empty constructor causes illegal instruction exceptions to be
generated on a Windows VM.
So here's an inbetween that looks stupid but works on what I've tested.
2016-07-27 23:34:15 +01:00
Jonathan Li
9f53987e3b
gsdx: Use map for GSCRC::m_map
...
Visual Studio 2015 initialises unordered_map using vector instructions,
which can cause PCSX2 to crash if the instructions aren't supported.
2016-07-27 23:34:14 +01:00
Jonathan Li
e5ea4cc5d4
gsdx: Defer vector initialisation to GS/GPUinit
...
It can cause PCSX2 to crash if the instructions aren't supported.
2016-07-27 23:34:14 +01:00
Jonathan Li
d726d4d4aa
gsdx: Add AVX2 to instruction set test
...
Also add a newline to the error message and report AVX/AVX2 instead of
SSE5.00 and SSE5.01.
2016-07-27 23:34:12 +01:00
Gregory Hainaut
7fa55c39f1
Merge pull request #1479 from ssakash/custom_fixes
...
GSDX-TextureCache: Add proper rounding when unscaling texture size
2016-07-27 22:31:21 +02:00
Gregory Hainaut
d6383e6c21
Merge pull request #1472 from PCSX2/gsdx-gta-depth-issue-1457
...
Gsdx gta depth issue 1457
2016-07-26 18:40:53 +02:00
Akash
d3ebd4b318
GSDX-TextureCache: Add proper rounding when unscaling texture size
...
Fixes flickering issues on Dragon Ball Z Budokai Tenkaichi FMV's on custom resolution, might also help prevent some crashes on custom resolution.
2016-07-26 18:28:07 +05:30
ramapcsx2
c592ccb3e5
Merge pull request #1435 from ssakash/Custom_TextureCache
...
GSDX: Improve scaling of custom resolution
2016-07-26 14:07:19 +02:00
Jonathan Li
5719bddbb5
gsdx:windows: Change m_colorspace to INT_PTR
...
Fixes a 64-bit compile error.
2016-07-23 02:19:28 +01:00
Gregory Hainaut
aea75f51bd
gsdx tc: partial support of pseudo depth for Dx
...
Fix #1457 (GTA)
The game uses a depth format for a pure color buffer (cokes do ravage
in gaming industry)
However I'm really afraid that it migth break another effect in other games.
2016-07-22 20:38:46 +02:00
Gregory Hainaut
7d35e15fea
Merge pull request #1444 from PCSX2/atomic-relax
...
Atomic relax
2016-07-22 18:36:02 +02:00
Gregory Hainaut
9182a287e2
Merge pull request #1469 from PCSX2/valgrind-memleak
...
Valgrind memleak
2016-07-22 18:17:37 +02:00
Gregory Hainaut
1e3c46a6bb
gsdx ogl: purge debug message in destructor
...
Allow to see latest error and avoid noise in Valgrind log
2016-07-21 09:51:16 +02:00
Gregory Hainaut
b6a55f50ab
gsdx ogl: fully initialise PSConstantBuffer structure
2016-07-21 09:51:16 +02:00
Jonathan Li
e25e8bc580
plugins: Tidy/standardise VS projects
...
Combine all the different configurations together so the project files
are more generic and maintainable.
Also standardise the layout so all the project files will be similar and
all have the same standard elements (even if empty).
Add 64-bit configurations.
Additional specifics:
spu2-x: FLOAT_SAMPLES preprocessor definition removed since it's unused.
2016-07-19 23:25:12 +01: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
Gregory Hainaut
f76bf9dddc
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:41:21 +02:00
Gregory Hainaut
086dfc8a14
gsdx sw: use acquire/release semantics for atomic operation
...
* Avoid the generation of memory barrier (mfence)
2016-07-14 18:29:41 +02:00
Gregory Hainaut
d855bc5ca8
gsdx sw: improve exit condition of SW extra thread
...
Use a relaxed atomic to read the exit variable in the hot path
Wait that exit is deasserted in the destructor, so we are sure the
thread will "soon" return
2016-07-14 18:29:22 +02:00
Gregory Hainaut
abc9f7d096
gsdx tc: log unsupported LookupDepthSource
2016-07-14 18:29:22 +02:00
Gregory Hainaut
e642bbc426
gsdx sw: add extrathreads_height to control the quantity of pixels processed by a thread
...
Value could range from 1 to 9. Default is 4 and it is potentially the
best option. Feel free to test some values on your system, behavior
might depends on the core number and thread number
Value is exponential so 4 is 2 times more pixels than 3.
Small value increased thread overhead, big value increase wait/sync latency
2016-07-10 17:48:10 +02:00
Gregory Hainaut
91eccb7bab
gsdx sw: increase the size of the ring buffer 256 => 65536
...
memory overhead by thead is only 256KB
However it will reduce the probability to block the push thread to nearly 0
I tested a couple of dumps and only manage 4000 element with 1 extrathread.
2016-07-10 10:49:06 +02:00
Gregory Hainaut
85fb55a0e1
gsdx ogl: memory management take 3
...
Add a factor 2 on the VRAM to get the quantity of available memory for the textures.
The driver is allowed to put some textures in RAM. Of course it is bad for performance
but it won't crash.
Due to the 4GB by process limit, I keep a (reasonable) maximum of 3.8GB.
In order to avoid a crash when memory is too low an exception will be risen
with no guarantee on rendering and big performance impact. In this situation
you ought to reduce upscaling/disable large framebuffer.
2016-07-10 10:23:23 +02:00
Gregory Hainaut
a37cd40ce3
gsdx ogl: only print an error when VRAM is low
...
Until a better solution is found or people buy better GPU :)
2016-07-09 11:43:28 +02:00
Gregory Hainaut
a2086ed458
gsdx profiler: drop latest frame time
...
Value is out of the chart. I'm not even sure it is a real frame so let's just remove it.
2016-07-09 10:03:21 +02:00
Gregory Hainaut
82d83ca579
gsdx: dull driver
...
Hopefully futur low-end GPU will get 4GB of VRAM
2016-07-08 21:53:42 +02:00
Gregory Hainaut
3f03f7333c
gsdx: improve builtin profiler
...
* Does the first vsync (start counter) after the sleep
* Dump data after the rendering, avoid to count extra destructor,sleep time
* Dump data into a basic csv file (if people want nice graph)
2016-07-08 21:47:53 +02:00
Gregory Hainaut
eefe3e8d4f
gsdx ogl: reserve 200MB of the VRAM for various gl buffers (IBO/VBO/PBO/UBO)
2016-07-08 09:43:47 +02:00
Gregory Hainaut
df4645a84a
gsdx ogl: Don't use NV extension on AMD
...
potentially the NV extension is wrongly used but can't test it with the free driver
2016-07-07 23:48:56 +02:00
Gregory Hainaut
d6e447a89c
gsdx: fix for old gl header release (build bot)
2016-07-07 22:23:20 +02:00
Gregory Hainaut
d8050634f6
gsdx ogl: plug GL_NVX_gpu_memory_info and GL_ATI_meminfo
...
to query available memory on the GPU
Requirement
* dedicated GPU (ofc!)
* proprietary driver. Free driver supports r600, radeonsi
2016-07-07 22:05:15 +02:00
Gregory Hainaut
7e2b3da928
gsdx ogl: monitor global GPU memory texture usage
...
So far there is a hardcoded limit at ~3.7GB
In the future, the limit will be reduced for low-end GPU.
2016-07-07 22:05:15 +02:00
Gregory Hainaut
f450056626
gsdx: fix initialization list order
...
In file included from GSRenderer.cpp:23:0:
GSRenderer.h: In constructor ‘GSRenderer::GSRenderer()’:
GSRenderer.h:58:12: warning: ‘GSRenderer::m_dev’ will be initialized after [-Wreorder]
GSDevice* m_dev;
^
GSRenderer.h:52:13: warning: ‘GSVector2i GSRenderer::m_real_size’ [-Wreorder]
GSVector2i m_real_size;
^
GSRenderer.cpp:32:1: warning: when initialized here [-Wreorder]
2016-07-07 22:05:15 +02:00
Gregory Hainaut
29c97a9bf2
gsdx ogl: only enable accumulation hack in HDR algo
...
Goal is to reduce shader permutations and improve perf when sw blending is disabled
2016-07-07 19:56:23 +02:00
Gregory Hainaut
16c2baa0df
gsdx-ogl: don't hardcode the accumulation blend trick
...
Perf impact is bigger than expected
2016-07-07 19:56:23 +02:00
ramapcsx2
6b6821d0c6
Merge pull request #1433 from FlatOutPS2/master
...
Merge Circuit: Enhance offset detection of output circuit
2016-07-06 12:15:08 +02:00
Akash
309a8283b2
GSDX-TextureCache: Don't allow RT size below default value
...
Fixes upscaling issues on Burnout dominator where setting custom resolution of 640x448 looks way worse than the native resolution.
2016-07-05 19:15:23 +05:30
Akash
6085da91e2
GSDX-Dialog: Clamp custom res and sw threads values to input range ( #1443 )
...
Fixes crash on custom resolution when users select a value below 256 or above 8192
2016-07-03 22:04:16 +01:00
Gregory Hainaut
a1a5f470f7
gsdx-ogl: fix builtin profiler frame counting
2016-07-03 15:54:58 +02:00
Gregory Hainaut
cc62e8c785
Merge pull request #1439 from ssakash/Cleanup_Warnings
...
PCSX2: Clean up warnings on MSVC
2016-07-03 15:45:39 +02:00
Gregory Hainaut
11eeeb6ab1
gsdx ogl: be sure sw blending is enabled in sw colclip
...
Hit the assertion on superman
2016-07-02 17:19:41 +02:00
Akash
4cfb2b248e
GSDX: Clean up warnings on MSVC
...
GLLoader: cast passed parameters to required type.
GSDeviceOGL: cast variables to required type and silence warnings.
GSRendererOGL: cast variables to required type and silence warnings.
2016-06-30 16:50:10 +05:30
Gregory Hainaut
a065a1d918
gsdx ogl: don't use GL_ARB_clear_texture for the depth buffer
...
It creates some slowdowns for unknown reason. My best hypothesis is
that stencil will be cleared too which is slow.
Let's keep the code for the future when stencil will be dropped.
Fix #1420
2016-06-30 09:40:07 +02:00
FlatOutPS2
1e3e343e43
Merge Circuit: Enhance offset detection of output circuit
...
If baseline and display rectangle offsets differ by small values then consider the status of frame memory offsets, prevents blurring on Tenchu: Fatal Shadows, Worms 3D, ProStroke Golf, Vexx
2016-06-29 22:35:53 +02:00
Akash
a5671f016a
GSDX-TextureCache: Add proper scaling for custom resolution
...
* Improve frame buffer height management on custom resolution. Width seems to be fine with the same size as scaled image output.
* Prevent offset issues on Persona 3 based on the data from merge circuit.
Note: Fixes custom resolution upscaling on ICO 50Hz/60Hz mode when large frame buffer is enabled. previously 60Hz mode only displayed half of the screen and 50Hz mode only worked due to the scissor hack.
2016-06-30 00:35:10 +05:30
Gregory Hainaut
1f4f55bcc9
gsdx: tentative fix for 64 bits buildl
2016-06-26 18:27:50 +02:00
Gregory Hainaut
4ec941440d
gsdx replay: use the new profiler data
2016-06-26 17:53:22 +02:00
Gregory Hainaut
d7c1faf563
gsdx ogl: add GPU timers to measure time between 2 vsync
...
So far only basic stuff (min/mean/max frame rendering time)
2016-06-26 15:34:36 +02:00
Akash
ce20544a4f
GSDX-TextureCache: Remove hacks which caused scaling issues
...
* Ignore Frame memory offsets for calculating dimensions value of display rectangle.
* Remove hack which limited scaling size based on the scissor value.
Note: With the following commit, SilentHill 2 now properly outputs the desired resolution by the users on custom resolution. Previously if we set 1024 x 1024 , it'll output a lower height value which was caused by the hack removed on this commit.
2016-06-26 12:14:38 +05:30
Gregory Hainaut
79587215bb
gsdx ogl: add the option force_texture_clear for test purpose
...
Might be completely useless.
1 => always clear framebuffers and textures to black (aka 0)
2 => always clear framebuffers and textures to red
2016-06-24 18:41:55 +02:00
ramapcsx2
dce67351f9
Merge pull request #1416 from ssakash/Real_IR
...
GSDX: Add proper detection of internal resolution
2016-06-21 18:05:46 +02:00
Gregory Hainaut
36e82abd12
Merge pull request #1411 from ssakash/PCRTC
...
Merge Circuit: Improve offset detection of output circuit
2016-06-19 13:45:51 +02:00
Gregory Hainaut
41c522104e
Merge pull request #1414 from PCSX2/gsdx-single-pbo
...
gsdx ogl: replace eight 8MB PBO with a single fat 64MB PBO
2016-06-19 13:40:38 +02:00
Akash
e05e7bee82
GSDX: Add proper detection of internal resolution
2016-06-19 17:10:03 +05:30
Gregory Hainaut
113c78b67e
gsdx ogl: replace eight 8MB PBO with a single fat 64MB PBO
...
It ought to be the same in performance but code will be easier this way
v2: print the sync status
v3: use a performance print so it doesn't spam the console
2016-06-18 14:59:19 +02:00
Akash
ab1ab7b6f1
GSDX: Remove redundant "Null" string from GS Frame title bar ( #1409 )
...
* GSDX: Remove redundant "Null" string
* GSDX: Convert "GetConfigI" into "GetConfigB"
2016-06-17 14:25:09 +01:00
Akash
4a0656e903
Merge Circuit: Improve offset detection of output circuit
...
* Fixes blurring / wrong resolution output on FFXII
2016-06-16 13:22:53 +05:30
Jonathan Li
52a88a7bdf
Merge pull request #1384 from ssakash/gsdx-default-renderer
...
gsdx:windows: Automatically determine best renderer
gsdx:windows: Only enable "Disable Depth Emulation" checkbox on OpenGL
2016-06-13 22:04:46 +01:00
Gregory Hainaut
08579021c5
gsdx ogl: 1 isn't used for WMT/WMS in shader
...
Stick it to 0 to avoid useless shader toggling
2016-06-11 13:35:32 +02:00
Gregory Hainaut
3234c8241b
gsdx ogl: massively extend glsl self test
...
* Support Mesa Nouveau IR (free driver for Nvidia's GPU)
=> Print intermediate representation + final shader
=> Dump GPR usage
* Move dumped shader in /tmp/GSdx_Shader/<sub_dir>
=> Avoid the landing of 3 thousands of files in $PWD ^^
* Use function instead of macro
2016-06-11 13:34:37 +02:00
Gregory Hainaut
1c8de02c8d
gsdx ogl: trace shader permutation
...
Too much permutation is bad for driver performances
2016-06-11 13:34:23 +02:00
Gregory Hainaut
5ffc911a69
gsdx: avoid crash in DX debug build
2016-06-11 01:13:20 +02:00
Gregory Hainaut
8c4d8cfdca
glsl: avoid an unset warning
2016-06-09 18:27:58 +02:00
Gregory Hainaut
df45c99f96
gsdx ogl: prefix member in GSUniform object with m_
2016-06-09 18:27:58 +02:00
Gregory Hainaut
fca2661e05
gsdx ogl: add a pretty name to various opengl opengl
2016-06-09 18:27:58 +02:00
Gregory Hainaut
ff3d9bd373
gsdx ogl: add function pointer to name object
...
It could be nice to ease debug
2016-06-09 18:27:58 +02:00
Gregory Hainaut
415ce93425
gsdx ogl: rename the confusing function EmulateGS to Lines2Sprites
2016-06-09 18:27:58 +02:00
Gregory Hainaut
61075febae
gsdx ogl: move selector as state variables
...
Will be easier to move code around if required in the future
2016-06-09 18:27:58 +02:00
Gregory Hainaut
1132230674
gsdx ogl: create m_require_one_barrier/m_require_full_barrier state variable
...
hopefully code will be more readable
2016-06-09 18:27:58 +02:00
Gregory Hainaut
7ece9b823d
gsdx ogl: move texture management into a separate function
2016-06-09 18:27:57 +02:00
Akash
399ad3f450
GSDX: Gray out "Disable Depth Emulation" for renderers other than OpenGL
2016-06-09 15:27:18 +05:30
Akash
fdc10e13ec
GSDX: Better detection of default renderer
...
* Better detection of default renderer based on the vendor ID ( Nvidia, AMD , Intel)
* GSUtil: Add a dedicated function for identifying best renderer
2016-06-09 15:27:11 +05:30
refractionpcsx2
c530858df3
GSdx: Move "isNative" check to DX11 context creation. Resolves speed regression in games that constantly change the viewport size.
2016-06-06 20:45:30 +01:00
Jonathan Li
7c205d7a1e
windows: Don't use __declspec(dllexport) for plugin exports
...
Using __declspec(dllexport) causes duplicate export warnings to be
generated when compiling 64-bit builds. Name mangling also occurs on
functions that are exported this way, so it doesn't actually work with
the plugin system, which uses unmangled names.
The module definition file exports the functions without name mangling
and is sufficient on its own.
2016-06-05 22:57:42 +01:00
Gregory Hainaut
2b00447a43
glsl: optimize the number of active constant buffer
...
Increase the performance on the free driver (Nouveau)
Currently the driver validates all UBO when only 1 is updated. It
is clearly a bad idea to put all UBO in a single common headers.
2016-06-05 16:45:11 +02:00
Jonathan Li
c7940856ce
windows: Remove unneeded library dependencies
...
Some are unnecessary since they're already taken care of by project
references, while others are duplicates or unused.
2016-06-04 22:55:48 +01:00
Gregory Hainaut
4768f912b8
gsdx linux: add vsync support for free driver
2016-06-04 13:17:59 +02:00
Gregory Hainaut
2b2412ca20
gsdx hw: disable OI_GsMemClear when framebuffer writes are masked.
2016-06-01 22:34:14 +02:00
Gregory Hainaut
7202cac7d0
gsdx ogl: remove the dual source blending workaround
2016-06-01 21:00:29 +02:00
Gregory Hainaut
08a8bfa76c
gsdx ogl: plug new program compilation for bad driver
2016-06-01 21:00:29 +02:00
Gregory Hainaut
17988fc7de
gsdx ogl: add code to compile a single shader
2016-06-01 21:00:29 +02:00
Gregory Hainaut
405f312fe8
gsdx ogl: format GSShader code
...
Move the Geometry Shader to the call of the function
2016-06-01 21:00:29 +02:00
Gregory Hainaut
538bb418ce
gsdx ogl: revert the removal of single shader compilation function pointer
...
(It doesn't mean I will drop SSO but that I will do some tests one day)
2016-06-01 09:29:56 +02:00
Gregory Hainaut
5d49a6b685
gsdx ogl: replace 4 VS shader variation by an AND mask
...
Perf will be roughly the same. However there is a single VS for all
the HW emulation.
2016-06-01 09:29:56 +02:00
Gregory Hainaut
959abe64f8
gsdx ogl: implement wildhack on the CPU
...
Speed impact is likely small and the plan is only to keep a single Vertex Shader
2016-06-01 09:29:56 +02:00
Gregory Hainaut
3d192b7f8d
gsdx ogl: separate channel code into a separate function
2016-06-01 09:29:56 +02:00
Gregory Hainaut
6d2196125d
gsdx: fix TVshader case option
2016-05-31 19:35:35 +02:00
Gregory Hainaut
564bf8a089
gsdx ogl: terminator 3 supports sampling from the depth
2016-05-30 19:39:52 +02:00
Gregory Hainaut
43a1c48f75
gsdx option: add missing default and fix case
2016-05-30 18:23:22 +02:00
Gregory Hainaut
9c8b5e37a4
gsdx ogl: blacklist AMD 2015 drivers
2016-05-29 18:21:12 +02:00
Gregory Hainaut
12512f767b
gsdx linux gui: disable the hack panel when user hacks are disabled
...
Move the user hack option to the main panel (Box with a single option doesn't look nice)
Hopefully it will be less confusing for linux users.
2016-05-29 18:09:22 +02:00
Gregory Hainaut
38a511e3e1
gsdx linux: some capture options are cross platform
2016-05-29 17:38:40 +02:00
Jonathan Li
8b74c108a4
Revert "gsdx:windows: Fix Windows 7 compile"
...
This reverts commit 7736c90457
.
It wasn't actually a Windows 7 compile fix, but a bad build environment
workaround.
2016-05-29 14:33:58 +01:00
Jonathan Li
b20433c0be
windows: Remove user.props references from all projects
...
find . -name *.vcxproj -exec sed -i -e '/user.props/d' {} \;
Microsoft recommends against using .user files. From
https://msdn.microsoft.com/en-us/library/669zx6zc.aspx :
"The best practice is to delete the reference to them in Property
Manager to ensure that your projects operate independently of any
per-user, per-computer settings. This is important to ensure correct
behaviour in a SCC (source code control) environment."
If you cannot compile SPU2-X after this commit (since that still relies
on the old DirectX SDK), you'll need to fix your build environment.
2016-05-29 12:21:52 +01:00
Gregory Hainaut
fb26254fbb
gsdx ogl: implement a more generic HLE shader for terminator 3
...
Hopefully without regression for others games
2016-05-29 10:13:43 +02:00
Gregory Hainaut
f7ddd488e1
gsdx ogl: Extend uniform buffer with channel parameter
...
Instead to use the standard ps ubo which is used every draw call.
I reused a barely used buffer to reduce the extra cost of the upload
2016-05-29 10:13:43 +02:00
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
Gregory Hainaut
5bdadbc089
Merge pull request #1268 from PCSX2/coverity-uninitialized-members
...
Coverity uninitialized members
2016-04-03 11:19:37 +02:00
Jonathan Li
7736c90457
gsdx:windows: Fix Windows 7 compile
...
Somehow D3D_COMPILE_STANDARD_FILE_INCLUDE isn't defined, so the correct
headers aren't being used.
2016-04-02 12:17:52 +01:00
Gregory Hainaut
cc1756b8e5
gsdx: disable dump in release build
2016-04-02 00:56:41 +02:00
Gregory Hainaut
8dee7daeb9
gsdx-ogl: init textures for all formats
...
CID 150171
2016-03-30 19:56:19 +02:00
Gregory Hainaut
856a12f94f
gsdx-ogl: init Render object
...
CID 147002
2016-03-30 19:56:19 +02:00
Gregory Hainaut
a4d0c23071
gsdx: init GSCapture field
...
CID 159404
2016-03-30 19:56:19 +02:00
Gregory Hainaut
1bd8113f66
cmake: add various option to disable plugin support
2016-03-30 10:19:54 +02:00
Jonathan Li
e347c8b0b1
gsdx:windows: Remove DXSDK references from property sheets
...
GSdx doesn't use the DirectX SDK anymore.
Also clean up the property sheets while I'm at it.
2016-03-30 00:03:04 +01:00
Jonathan Li
b243e2532b
gsdx-d3d9: Remove d3dx9 stuff and use d3dcompile
...
Using D3DX9 requires the end user to install the Direct X redist files.
Switch to using D3DCompile.
2016-03-30 00:03:04 +01:00
Jonathan Li
2ec8d88d80
gsdx-d3d11: Remove d3dx11 stuff and use d3dcompile
...
Using D3DX11 requires the end user to install the DirectX redist files.
Switch to using D3DCompile, and distribute D3DCompiler_47.dll for
Windows Vista, 7 and 8 users (Windows 8.1 onwards supplies
D3DCompiler_47.dll with the OS).
2016-03-30 00:03:04 +01:00
Jonathan Li
8f4823d604
gsdx-dx: Load D3DCompiler dll at runtime
...
D3DCompiler_47.dll will be loaded for Windows 8.1 and above (and maybe
Windows 7 devs), D3DCompiler_43.dll will be loaded for Windows 7 and
below.
2016-03-30 00:03:04 +01:00
Jonathan Li
80b6140a3e
gsdx:windows: Prefer Windows SDK over old DX SDK
...
Some files are present in both the Windows SDK and the old DirectX SDK.
Use the newer versions of the files in the Windows SDK where possible.
2016-03-30 00:03:04 +01:00
Gregory Hainaut
f6ee94589f
gsdx hw: OI_GSMemClear supports various frame formats
...
Could help #1267
2016-03-28 10:47:42 +02:00
Gregory Hainaut
a99750ae87
gsdx hw: only enable OI_GsMemClear when both depth/alpha test are disabled
...
Fix #1262
2016-03-26 11:28:28 +01: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
791a14bec0
gsdx linux: add a gui box to select the png compression level
2016-03-25 08:23:50 +01:00
Gregory Hainaut
205b496d5c
gsdx: fix gl recording regression
2016-03-21 18:52:26 +01:00
Gregory Hainaut
8e5e770fd1
gsdx hw: Ensure GS memory is always cleared properly
...
It will fix some issues on FMV
Previous behavior can be restored with the hack "UserHacks_DisableGsMemClear"
Fix #768
And maybe #855
2016-03-21 18:26:22 +01:00
Gregory Hainaut
c43b1ac201
gsdx tc: extend the fast invalidation hack to limit the size of target read
...
It actually removes the previous hack that read the full target.
Unfortunately snowblind engine game uses big target so the read is very big too (1280x448)
which is killer for the perf. Whereas the game requires only 24x12 texels
Give a 2x speed boost on Champion of Norrath !!!
2016-03-20 18:11:44 +01:00
Gregory Hainaut
46ff5dccff
gsdx: be debug friendly
2016-03-20 16:15:00 +01:00
Gregory Hainaut
a83b8d62ec
gsdx linux: add a gui checkbox for the "fast texture invalidation" hack
2016-03-20 13:59:24 +01:00
Gregory Hainaut
7eb242d3ad
gsdx-ogl: remove the ogl_texture_storage option
...
The previous commits make PBO faster for all drivers.
2016-03-19 01:00:52 +01:00
Gregory Hainaut
68aa182b16
gsdx-ogl: sort the texture upload code
...
I wanted to do a separate path for palette texture. So far, it isn't very
conclusive.
2016-03-19 00:58:58 +01:00
Gregory Hainaut
46a4d2dc47
gsdx-tc: add UserHacks_DisablePartialInvalidation for snowblind engine game
...
Games uses very special texture with a lots of repeating.
It is much faster to send the full texture rather than trying to partially invalidate it.
On my gs dump:
FPS: 29 => 68 !
2016-03-19 00:25:58 +01:00
Gregory Hainaut
eb69522641
gsdx-ogl: optimize texture memory upload
...
Previous code was
1/ unpack texture into local buffer
2/ copy local buffer into gl buffer
3/ copy gl buffer to texture
New code is
1/ unpact texture directly into gl buffer
2/ copy gl buffer to texture
Perf increase (done in native)
DQ8: 255 -> 270 (+5%)
Colin: 126 -> 135 (+8%)
ZoE: 50 -> 54 (+8%)
2016-03-18 20:24:42 +01:00
Gregory Hainaut
da741e294e
gsdx-ogl: optimize GPU->CPU memory transfer size
...
Might help for snow engine game (a little)
Previous code use to read the full texture whereas now it will be limited
to the size of the useful data.
2016-03-18 20:24:42 +01:00
Akash
9b0ecdf43f
GSDX-OGL: gray out MSAA on opengl renderer
...
It's currently unimplemented on OpenGL renderer.
2016-03-14 18:38:40 +05:30
Jonathan Li
b516c1001a
windows: Set _WIN32_WINNT to 0x0600 (Windows Vista)
2016-03-13 13:41:16 +00:00
Jonathan Li
9ed9b2d8cd
windows: Switch to DefaultPlatformToolset aka non-XP toolsets
...
Basically I ran
find . -name "*.vcxproj" -exec sed -i -e 's/_xp//' {} \;
This will likely break XP, but it paves the way on Windows for a PCSX2
that does not require the DirectX redistributables to be installed for
Windows 8, 8.1 and 10 users. Windows Vista and 7 users will still require
the DirectX redistributable files for XInput and XAudio, though PCSX2
should still be capable of running if a user does not actually use either
of them.
2016-03-13 12:04:28 +00:00
Gregory Hainaut
653998e005
gsdx: add vertex data offset in comment
...
Avoid to recompute them every time I want to decode the vertex stream
2016-03-12 15:53:38 +01:00
Gregory Hainaut
de7d127c52
gsdx-ogl: create a small macro to load function pointers
2016-03-12 15:52:36 +01:00
Gregory Hainaut
95ef4e20f8
gsdx-ogl: load GL_ARB_viewport_array function pointer for the future
2016-03-12 15:52:36 +01:00
Gregory Hainaut
56c2e94daf
gsdx-ogl: sort extension requirement
...
All GL4 extensions supported by DX10 class GPU will be soon mandatory
Namely:
* GL_ARB_copy_image
* GL_ARB_texture_barrier
* GL_ARB_clip_control
* GL_ARB_direct_state_access
* GL_ARB_separate_shader_objects
* GL_ARB_buffer_storage
2016-03-12 15:52:36 +01:00
Gregory Hainaut
a3788c4e98
Merge pull request #1225 from PCSX2-Alpha/scaling_fix
...
GSDX: set a safe limit to Framebuffer width
2016-03-12 15:42:18 +01:00
Akash
997f0535f5
GSDX: Set a safe limit to Framebuffer width
...
There are likely few games (RE4) which constantly change the FBW register value causing the framebuffer width to be updated at every interval. Adding a safe limit (512) similar to frame buffer height would prevent such constant changes of the framebuffer width when FBW changes once again to an even lower value.
2016-03-11 07:28:05 +05:30
Gregory Hainaut
ec57f1305a
gsdx: detect rendering outside of the framebuffer
...
Could help to detect rendering issue (for example missing fmv)
2016-03-10 19:03:39 +01:00
Gregory Hainaut
bc73195193
gsdx-ogl: pack more tightly the FS UBO
...
Merge TA vec2 + Af vec1 into a single vec4
2016-03-10 18:29:05 +01:00
Jonathan Li
3e278a2e75
Merge pull request #1197 from turtleli/gsdx-png
...
Gsdx: PNG screenshots (Windows), use libpng directly
2016-03-08 23:49:56 +00:00
Gregory Hainaut
7b8616ac7b
gsdx-ogl: add function pointer for query object
2016-03-06 13:39:24 +01:00
Jonathan Li
6b950d0408
gsdx: Allow dump and capture PNG compression to be changed
...
Valid values for png_compression_level are from 0 (no compression) to 9
(max compression). The default is 1.
v2: Use zlib Z_BEST_SPEED (1) and Z_BEST_COMPRESSION (9) defines.
2016-03-02 22:58:45 +00:00
Jonathan Li
a97cbf038c
gsdx-d3d9: Save screenshots as PNG files
...
v2: Avoid unnecessary memory copy
2016-03-02 22:57:17 +00:00
Jonathan Li
d865efceb9
gsdx-d3d11: Save screenshots as PNG files
2016-03-02 22:57:16 +00:00
Jonathan Li
cf939620ea
gsdx-ogl: Save depth image as RGB and alpha images
2016-03-02 22:57:16 +00:00
Jonathan Li
97215008c9
ci|cmake|debian: Remove png++ build dependencies
...
GSdx now uses libpng directly. png++ is now unused, so let's remove it.
2016-03-02 22:57:15 +00:00
Jonathan Li
ee5861efc8
gsdx: Remove non-PNG code
...
It's no longer in use.
2016-03-02 22:57:12 +00:00
Jonathan Li
38edd77034
gsdx-ogl:windows: Save screenshots as PNG files
...
v2: Add zlib directory to property sheet
2016-03-02 22:52:08 +00:00
Jonathan Li
87dcfbc645
gsdx-png: Use libpng directly instead of via png++
...
v2: Increase compression to maximum
v3: Add zlib to GSdx build dependencies
v4: Reduce memory usage
2016-03-02 22:48:54 +00:00
Gregory Hainaut
edef3ad8c3
Merge pull request #1170 from PCSX2-Alpha/TC_Scaling
...
GSDX: Detect RT size based on display and frame registers.
2016-03-02 13:51:28 +01:00
Akash
b07b06a9fb
GSDX-Texture Cache: Rework scaling function
...
The following patch uses the height value of the display rectangle rather than make an estimation of the Frame buffer height when the game uses a non-referenceable height (or) width.
2016-02-24 09:14:01 +05:30
Gregory Hainaut
cb776d2f50
gsdx:atomic: better match the old if(!_interlockedbittestandset(&m_mapped, 0)) behavior
...
Thanks @turtleli
2016-02-23 18:43:44 +01:00
Gregory Hainaut
f9b4ff17a5
gsdx: drop interlocked* function on linux
2016-02-22 19:12:50 +01:00
Gregory Hainaut
a601991f91
gsdx: add atomic for transaction scope object
2016-02-22 19:12:50 +01:00
Gregory Hainaut
f904cd6c4a
gsdx: add atomic for SW Renderer
...
V2: fix assertion
2016-02-22 19:12:37 +01:00
Gregory Hainaut
9bbb0fe1f6
gsdx: add atomic for texture upload
...
V2: fix init of atomic flag object
2016-02-21 18:17:53 +01:00
Gregory Hainaut
a66c911fed
cmake: factorize debug/dev define
2016-02-21 16:17:10 +01:00
Gregory Hainaut
9ba470fc63
gsdx-ogl: properly handle t_float in GS
...
f8c442cf76
misses the swap of t_float in GS
Fix regression in Okami
Bonus: factorize VS_WILDHACK in the VS
2016-02-21 11:48:30 +01:00
Gregory Hainaut
bef8447447
Merge pull request #1186 from PCSX2/gsdx-unoptimize-vs
...
gsdx-ogl: make VS more generic
2016-02-20 10:39:19 +01:00
Gregory Hainaut
6002719c8c
Merge pull request #1185 from PCSX2/tekken5-fast-depth
...
gsdx: no depth lookup optimization
2016-02-20 10:24:21 +01:00