Gregory Hainaut
b7e16b5989
gsdx-ogl: clean the blending management
...
Intially GSBlendStateOGL was an alias of the m_blendMapD3D9 array
The object was replaced by an index in the array. Save 2k of memory duplication.
And too much useless code.
v2: push/pop blending state in DATE stuff
v3: remove m_state which is useless now
2015-08-05 22:55:12 +02:00
Gregory Hainaut
717f0fcb4d
gsdx-ogl: optimize fbmask setup
2015-08-05 22:55:12 +02:00
gabest11
49b3acea72
gsdx: texture size reduction in sw mode, fixes Stolen, less memory usage in general.
2015-08-05 19:11:41 +02:00
Gregory Hainaut
73e2ff6ff6
gsdx-ogl: change PrimitiveOverlap algo from O(n^2) to O(n)
...
+ only enable this optimization when it is useful (date or sw blending)
Less impact on the perf even for big vertex array
2015-08-05 17:59:55 +02:00
Miguel A. Colón Vélez
6462393aaf
Introduce end-of-line normalization
...
Signed-off-by: Gregory Hainaut <gregory.hainaut@gmail.com>
2015-08-04 23:52:48 +02:00
Miguel A. Colón Vélez
a42a236961
Gsdx: Move the stdext namespace declaration.
...
This will eventually lead to
error C2871: 'stdext' : a namespace with this name does not exist.
might as well fix it now.
2015-08-04 22:16:15 +02:00
Miguel A. Colón Vélez
30c6389ed9
VS2015: Fix compilation
...
Error C2338 The C++ Standard forbids containers of const elements
because allocator<const T> is ill-formed. (compiling source file GS.cpp)
2015-08-04 22:16:04 +02:00
Miguel A. Colón Vélez
d45676b478
Merge local changes to xbyak 4.84
2015-08-04 22:15:52 +02:00
Miguel A. Colón Vélez
41094ac22e
Update from xbyak 4.00 to 4.84.
2015-08-04 22:15:46 +02:00
Miguel A. Colón Vélez
e20768d257
VS2015: Fix w32pthreads and xpad
2015-08-04 22:15:36 +02:00
Gregory Hainaut
9d1674db99
gsdx-gui: remove useless linux ifdef
2015-08-04 22:08:55 +02:00
Gregory Hainaut
36554c3375
Merge branch 'hdr-colclip-32bits'
2015-08-04 21:55:40 +02:00
Gregory Hainaut
45bb27d6db
gsdx-ogl: extend HDR colclip to 32 bits texture
...
Unfortunately 16 bits wasn't enough for Castlevania.
2015-08-04 21:54:27 +02:00
Gregory Hainaut
c6ff7531fb
gsdx-ogl: performance boost on virtuafighter
2015-08-04 21:26:03 +02:00
Gregory Hainaut
d80aa0b0bd
gsdx-ogl: remove 2 printfs
...
GL_INS is a better tracing solution
2015-08-04 20:47:02 +02:00
Gregory Hainaut
744f9ebc09
gsdx-ogl: rare corner case when both texture shuffle and date are enabled
...
In texture shuffle mode the texture data is either RG or BA. It means
that DATE must either checks MSB of G or A.
Close #693
2015-08-04 20:10:44 +02:00
Gregory Hainaut
6cb0443227
gsdx: disable depth rendering if rt == depth
...
I used to disable the RT but it doesn't work well with 50cents. It seems
texture writes weren't propagated correctly to the depth buffer. Besides
the game write an alpha value whereas depth is 24 bits only...
2015-08-04 19:39:29 +02:00
Gregory Hainaut
3784ea768f
gsdx: check null pointer when doing a texture clear
2015-08-04 19:26:17 +02:00
gabest11
42f51591df
gsdx: lupin 3 fix, texture addressing outside the limits, only for sw and opencl yet
2015-08-04 13:27:08 +02:00
gabest11
d631030608
gsdx: fixed some of the renames where it made no sense, also added a commend about lupin 3rd.
2015-08-04 03:36:42 +02:00
Maxxus
c0f85de17f
onepad: Minimum code needed to get Dualshock 3 working on recent linux and evdev releases.
...
Commit message edited by Gregory.
Comment below from Jonathan Li
On my system, /dev/input/event13 (evdev interface) and /dev/input/js0 (joystick interface) correspond to the DS3 on my system. User/group ownership are both root.
With /dev/input/event13 at 0640 and /dev/input/js0 at 0644 - SDL2 detects no pad, SDL1 detects a 19 button, 27 axis pad
With /dev/input/event13 at 0666 and /dev/input/js0 at 0644 - Both SDL1 and SDL2 report a 19 button, 4 axis pad.
SDL2 only uses the evdev interface, SDL1 uses the evdev interface but if that fails, it uses the joystick interface.
2015-08-03 19:34:08 +02:00
gabest11
e010004f1f
gsdx: _isnan was not reliable, rewrote it as GSVector4::replace_nan, it uses cmpps and the result as the mask to blend the original value and FLT_MAX. No jumps or function calls.
2015-08-03 14:35:47 +02:00
gabest11
85117ecbdd
gsdx: simplified isnan test, it compiles to an inline sse instruction and a flag test, silent hill dump still looks fine.
2015-08-03 11:27:14 +02:00
Gregory Hainaut
6e1cd077a9
gsdx-debug: push ubo in a group
2015-08-03 08:46:25 +02:00
Gregory Hainaut
e972f4f4dd
gsdx-ogl: extend device to support an offset for normal draw
2015-08-02 21:30:19 +02:00
Gregory Hainaut
cabd7409e5
gsdx-ogl: don't validate the pipeline
...
Too noisy in debugger trace. Never catch any errors anyway.
2015-08-02 21:30:19 +02:00
Gregory Hainaut
59cdf77784
gsdx-ogl: create a new function to set the blending state
2015-08-02 21:30:19 +02:00
Gregory Hainaut
1da611fb75
gsdx-ogl: clean PS selector
2015-08-02 21:30:19 +02:00
gabest11
542dd33169
Merge branch 'master' of https://github.com/pcsx2/pcsx2
2015-08-02 20:27:33 +02:00
gabest11
a1a842b07f
gsdx: date/datm fix for 16-bit frame buffer in sw rendering mode
2015-08-02 20:21:49 +02:00
Gregory Hainaut
8424c18e9f
Merge pull request #688 from PCSX2/hdr-colclip
...
Hdr colclip
2015-08-02 18:13:28 +02:00
Gregory Hainaut
1f402b1b56
gsdx-ogl: fix bad detection of overlapping
...
avoid rendering corruption with SW blending
2015-08-01 13:29:25 +02:00
Gregory Hainaut
ec007ac8d0
gsdx-ogl: support accurate blending without geometry shader
...
For the Mesa driver
2015-08-01 13:26:15 +02:00
Gregory Hainaut
4a3c145c72
gsdx-ogl: depth support: better support of 16 bits z buffer
...
Fix issue in socom2
2015-08-01 01:28:41 +02:00
Gregory Hainaut
eb0fa8c7dc
gsdx-ogl: fix bad detection of overlapping
...
avoid rendering corruption with SW blending
2015-08-01 01:27:22 +02:00
Gregory Hainaut
8452d2ccfe
gsdx-ogl: fbmask regression! don't use bit operation with integer
2015-07-31 21:10:58 +02:00
Gregory Hainaut
fff59f547d
gsdx-ogl: fbmask regression! don't use bit operation with integer
2015-07-31 19:43:06 +02:00
Gregory Hainaut
a0edcb58af
gsdx-ogl: extend cclip blending level with destination alpha blending
...
The purpose is to emulate correctly destination alpha factor
An alpha channel of 128 is 1.0 in the GS but only ~0.5 in the GPU
I think few draw call use destination alpha so impact on perf must remains small.
2015-07-31 09:45:28 +02:00
Gregory Hainaut
97b38d9e1b
gsdx-ogl: directly set impossible mode in the blending table
...
Avoid to hack it in the creation
Allow in the future to reuse the table directly instead of converting
in a blend object
2015-07-31 09:45:28 +02:00
Gregory Hainaut
8554f32086
gsdx-ogl: clean the blend table
...
Remove old shader define
Prefix macro with BLEND_
Add some notes to explain the special symbol
2015-07-31 09:45:28 +02:00
Gregory Hainaut
cfd0fd6cc8
gsdx-ogl: remove old colclip algo
2015-07-31 09:45:28 +02:00
Gregory Hainaut
93c47feb7c
gsdx-ogl: replace old colclip algo with the HDR algo
...
Similar speed but more accurate
Allow to clean the code
2015-07-31 09:45:28 +02:00
Gregory Hainaut
83f874db93
gsdx-ogl: remove bsel.ps
...
Just clear bsel.abe to disable blending
2015-07-31 09:45:28 +02:00
Gregory Hainaut
25298c70f7
gsdx-ogl: move blending management into a separate function
2015-07-31 09:45:28 +02:00
Gregory Hainaut
25bd5f5e85
gsdx-ogl: request texture barrier to emulate accurate date
...
Actually it can partially be done with GL_ARB_shader_image_load_store
extension. However all drivers that support shader_image have
texture barrier too.
2015-07-31 09:45:28 +02:00
Gregory Hainaut
2901e94ebc
gsdx-ogl: always bind the RT as input texture
...
To avoid code duplication
2015-07-31 09:45:28 +02:00
Gregory Hainaut
1fe3e04ce3
gsdx-ogl: don't alias m_env/m_context variable
...
It is cumbersome to move code
2015-07-31 09:45:28 +02:00
Gregory Hainaut
8f27a5a92b
gsdx-ogl: only enable fast accurate colclip in level3
...
Until we drop the old method
2015-07-31 09:45:05 +02:00
Gregory Hainaut
83dfc6b633
gsdx-ogl: clean a bit selector code
...
Use countof macro (avoid to duplicate the size)
Fix the size of array
Remove useless alpha_stencil case
2015-07-30 18:36:05 +02:00
Gregory Hainaut
e026f1bac6
gsdx-ogl: implement a fast accurate colclip algo
...
The idea is to use a floating texture to accumulate the data and
then do a final postprocessing pass to apply the modulo
v2:
* use bounding box to
* fix vertex corruption issue
* use negative number in shader which allow to use half float (+12
fps@4x)
2015-07-30 18:34:52 +02:00
Gregory Hainaut
aa8f5848d1
gsdx-ogl: always issue a barrier when requested
...
Safer this way
2015-07-30 18:24:36 +02:00
refractionpcsx2
28fbae4791
gsdx-gui: Tidy up GUI options
2015-07-30 18:24:32 +02:00
Gregory Hainaut
88bd0996f5
gsdx-ogl: only print same tex/rt message when prims overlaps
...
Avoid most of the false positive
2015-07-30 18:24:32 +02:00
Akash
350e373e3f
gsdx-gui: Remove Aggressive CRC hack.
...
The option is pretty much useless, CRC hack level controls the usage of hacks already.
2015-07-30 18:24:28 +02:00
Akash
68833e10d1
gsdx-gui: Accurate blending unit for Windows.
...
The following patch merges all the Accurate options related to the blending unit into a single one.
2015-07-30 18:24:19 +02:00
Gregory Hainaut
d191ae4aba
glsl: use rounding in convert 4 shader
...
It will avoid texture rouding error with negative number
2015-07-30 18:22:59 +02:00
Gregory Hainaut
7b9fa8fbe5
gsdx-ogl: add an assertion that will save me
2015-07-30 18:22:59 +02:00
Gregory Hainaut
46a1525668
gsdx-ogl: support various texture format creation
...
Such as GL_RGBA32F/GL_RGBA16F/GL_RGBA16UI/GL_RGBA16I/GL_RGBA16
Not yet used
2015-07-30 18:22:59 +02:00
Gregory Hainaut
ee9edb0b19
gsdx-ogl: create a copy rect with conversion function
...
Previous CopyRect function does a memcopy without conversion.
This function will allow to use different format for input/output. Just a
possibility for the future
2015-07-30 18:22:59 +02:00
Gregory Hainaut
ae8df002af
gsdx-ogl: optimize Cs * As + Cd and Cs * Af + Cd blending
...
Basically the code does the alpha multiplication in the shader therefore
the blend unit only does a pure addition. This way the multiplication is
accurate and accurate_blending doesn't requires a costly barrier.
This code also avoid variable duplication to make the code more separated.
Hopefully blending can be done in a separated function
It is preliminary work to support fast color clipping with HDR
v2: fix assertion compilation failure
v3: fix regression in not accurate mode
v3: Cs * As/Af is not an accumulation
Those cases don't need the Cd addition and were already optimized anyway
Fix a regression on GoW2
2015-07-30 18:22:59 +02:00
Gregory Hainaut
12fdc37599
gsdx-ogl: reorganize blending in the renderer
...
Do DATE algo selection before blending. This way we can detect bad
interaction.
Regroup all blending/colclip in a single block. Avoid to check abe &&
rt multiple times.
v2: only enable sw blending when abe is true
2015-07-30 18:21:01 +02:00
Gregory Hainaut
caadc73e1b
gsdx-ogl: add a new level for accurate blending
...
The updated medium level will run for all sprites. It helps sotc blooming effect and it remains
fast enough to be enabled by default (at least on 3D games)
The new high level will run for all sprites + color clipping
2015-07-30 18:21:01 +02:00
Gregory Hainaut
95c374bbcc
glsl: Round 0.95+ to 1 for texel colors
...
It improves SotC blooming. Suikoden seems to be fine too.
2015-07-30 18:21:01 +02:00
Gregory Hainaut
01a1b1a5e6
gsdx-ogl: add the code to handle point and line in SW blending
2015-07-30 18:21:01 +02:00
Gregory Hainaut
a85894e159
gsdx-ogl: move texture shuffle and fbmask into a dedicated function
...
DrawPrims is really too big now
2015-07-30 18:21:01 +02:00
Gregory Hainaut
b632b2a478
gsdx-linux: add a new combo box to select the blend accuracy level
2015-07-30 18:21:00 +02:00
Gregory Hainaut
5c1b8986c6
gsdx-ogl: use SW blending when no barrier is required
...
Speed penality is small (only GPU) but it is more accurate
2015-07-30 18:21:00 +02:00
Gregory Hainaut
8c8fe633a5
gsdx-ogl: merge 3 accurate* option into a nice combobox
...
It is much easier to configure this way
2015-07-30 18:21:00 +02:00
Gregory Hainaut
8da63cf95a
gsdx-ogl: try to enable sw blending for sprite rendering
...
The idea is that sprites are often use for post-processing effect (ofc except 2D games)
Most of the time post-processing supports SW blending with a small speed penality. SW
blending is more accurate so it is better to use it.
2015-07-30 18:21:00 +02:00
Gregory Hainaut
f4e881ad30
gsdx: always set texture shuffle flag
...
Avoid bad effects in 16 bits RT games
2015-07-30 09:15:04 +02:00
Gregory Hainaut
7aa36133de
Merge pull request #657 from turtleli/wxwidgets3_switch
...
Windows: switch to wxWidgets 3.0
2015-07-29 14:16:02 +02:00
Gregory Hainaut
5c58bd2092
Merge pull request #682 from micove/Add_disable-build-date
...
Linux: Add DISABLE_BUILD_DATE and misc fixes
2015-07-29 11:45:32 +02:00
Pistachioman
c6c7d99fd2
Add default extension to lilypad's save/load config dialog
2015-07-27 20:30:50 +02:00
Miguel A. Colón Vélez
e4ab71abf3
Add authors comment that suggest public-domain license.
...
Sourceforge was dead for more than a week therefore add the license
information. I could not find the original TGM source (dead link) so I'm not
even sure if this still applies or if the glsl was totally rewritten. None
of the glsl files have a copyright header so it's hard to tell.
2015-07-27 14:21:29 -04:00
Gregory Hainaut
f2c77ffa08
gsdx:tc: detect texture shuffle in previous frame
...
GoW2 uses the effect at the start of a new frame and therefore need the
state of the previous frame. (Note 1 issue remains)
Ricky need to be tested.
2015-07-26 10:14:07 +02:00
Jonathan Li
25b9b24f77
spu2-x: windows: Fix incorrect use of scanf
...
Half width specifiers were not used, so scanf was writing ints into
bytes.
Note: Visual Studio 2013 doesn't support the hh format specifier.
2015-07-23 19:01:15 +01:00
Jonathan Li
150c53af0f
spu2-x: windows: Remove Unicode to Ascii conversion
...
Use swscanf instead of sscanf to read wide characters directly
2015-07-23 18:58:24 +01:00
Gregory Hainaut
cb4af8fe83
gsdx-ogl: small optimization for the GPU
...
Gain: 1% at 4x on SotC (it partially compensates recent additions)
When the color is constant and equal to 128, the MODULATE mode is
equivalent to the DECAL mode. It saves 5 instructions on the FS.
2015-07-21 08:19:36 +02:00
Gregory Hainaut
7ca463bf75
gsdx: NaN is likely not well supported for S & T
...
Add also a comment to explain the NaN issue on Q
2015-07-21 08:19:36 +02:00
Gregory Hainaut
223b7daa1d
gsdx-ogl: fix fbmask regression
...
I forget to remove an useless 255.0f factor
2015-07-19 23:55:27 +02:00
Gregory Hainaut
a54e636364
gsdx-linux: add a tooltip for the filtering option
2015-07-19 23:27:45 +02:00
Gregory Hainaut
5c740ff41e
gsdx-ogl: wipeout AlphaStencil & Alpha hack
...
Accurate options do a better jobs. Technically it can still
be useful for old gpu/driver that doesn't support the GL4.5 extension.
On Windows, you can still rely on Dx
On linux, free driver support it (except Intel)
2015-07-19 22:43:48 +02:00
Gregory Hainaut
759e75091a
gsdx-gui: yes openGL support correctly 8 bits texture
2015-07-19 17:29:25 +02:00
Gregory Hainaut
6719fc89a6
gsdx-sw: Nan is not well supported in Vertex
...
It fixes the bad light on Silent Hill with the SW renderer.
Full story
if Q is NaN, m_vt.m_eq.q becomes wrongly true
/Q will wrongly be optimized in the "Vertex Shader" of the SW
Note: Add an assert for the STQ handler
Code path is quite hot so no need to add extra check for nothing
2015-07-19 16:41:05 +02:00
Gregory Hainaut
7f76883b98
Merge pull request #658 from ssakash/patch-34
...
Add Accurate Frame Buffer mask for Windows [GUI] and remove some old options.
2015-07-19 09:07:13 +02:00
Gregory Hainaut
38c086008d
glsl: round blending as SW renderer
...
Better tone on God of War with ultra accurate mode
2015-07-18 17:16:46 +02:00
Gregory Hainaut
88cd333839
gsdx-ogl: don't enable both HW&SW blending
2015-07-18 16:15:52 +02:00
Gregory Hainaut
c4e165067d
glsl: use signed integer when working with substraction...
...
It mostly fixes rendering of GoW with ultra blending
Color is still a bit wrong but rounding is likely incorrect
2015-07-18 14:41:03 +02:00
Gregory Hainaut
c701ab4368
glsl: don't use normalized value for color range
...
Globally shader uses less intruction (except blending part)
It would also allow to improve the rounding of color
2015-07-18 14:41:03 +02:00
Gregory Hainaut
57394a03e0
partially revert: glsl: disable computing of extra alpha coeff in SW blending
...
It generates undefined data in screen. Maybe blending isn't switch off properly.
I need to investigate it.
2015-07-18 14:41:03 +02:00
Gregory Hainaut
5f5266ba45
gsdx-ogl-debug: don't optimize alpha channel in dump
...
Allow to dump AEM part of the shader
2015-07-18 14:40:57 +02:00
Gregory Hainaut
036cb229a3
glsl: add various comment for future idea
...
For example GL4 GPU supports special bit operation
2015-07-18 14:40:57 +02:00
Gregory Hainaut
6c1c857024
gsdx-ogl-debug: properly detect start of instruction in dump
2015-07-18 14:40:46 +02:00
Akash
37897eb922
add accurate framebuffer mask for windows.
2015-07-18 11:24:00 +05:30
Akash
7c4f3d28ce
remove is_gsopen stuffs since old GUI is deprecated.
2015-07-18 10:50:34 +05:30
Gregory Hainaut
698dda2310
gsdx-ogl: remove subroutine from the gui too
2015-07-17 22:28:59 +02:00
Gregory Hainaut
36e83b42ce
glsl: round texture and fragment color as the SW renderer
...
GS uses integer value and does integer operation too.
This commit trunc the sampled texture, the interpoled fragment color
and the product of the 2.
It impacts negatively the perf of about 3/4% (GPU) but it fixes rendering on
suikoden and potentially some others games too.
2015-07-17 21:08:49 +02:00
Gregory Hainaut
5f247a6e16
glsl: rewrite tfx function to ease future update
...
No need to put lots of ifdef, compiler will optimize everything
It increases a bit the readability
2015-07-17 21:08:49 +02:00
Gregory Hainaut
ea9e608288
gsdx-ogl: fix texture palette mask
2015-07-17 21:08:49 +02:00
Gregory Hainaut
b4c04ed00a
gsdx-ogl: wipeout subroutine code
...
Code was completey bitrotten
Code was a partial test (and yet 500 lines already)
Shader is more and more complex and multithreading support greatly
reduce the cost of shader switch
2015-07-17 21:08:49 +02:00