Commit Graph

2137 Commits

Author SHA1 Message Date
Gregory Hainaut 0663501d6f gsdx-linux: disable perf monitor on release build
Code is rather slow on linux. Expect a 5-10% perf increase
2015-08-10 08:35:16 +02:00
Gregory Hainaut 9f92f63194 gsdx-ogl: Use GetAlphaMinMax to limit the scope of FULL accurate blending
Provide a massive speed up in this level.
2015-08-09 13:44:31 +02:00
Gregory Hainaut 61694013a5 gsdx-ogl: compact blending parameter structure
Save 656B of data. It is good for the cache.
2015-08-09 13:44:30 +02:00
Gregory Hainaut df3ade896b gsdx-ogl: use integer for blend factor
Integer argument&comparison might be lighter

V2: Forget to change one OMSetBlendState call
2015-08-09 13:44:05 +02:00
nE0sIghT e1272dc2f9 Use global compiler optimization flags instead of defining them for every plugin/binary 2015-08-08 16:25:17 +03:00
Gregory Hainaut 5b57405517 gsdx-ogl: blend management cleanup
* reorder the blend function
* remove OM bsel object
* add a bit to support pabe (miss the glsl part)
2015-08-08 09:18:09 +02:00
Gregory Hainaut 4d12410707 gsdx-ogl: latch constant buffer in rendering object
* Initialization of the object is done once
* Avoid to reupload it when an useless parameter toggle
 => -10% of UBO update
2015-08-08 09:18:09 +02:00
Gregory Hainaut bd0de8fbaf glsl: (colclip) HDR doesn't need wrapping neither clamping
Might save a couple of instruction in the PS
2015-08-08 09:18:09 +02:00
Gregory Hainaut 8a4c0e9782 cmake: drop extra alignment on GSdx
It requires extensive tests
2015-08-08 09:18:09 +02:00
Gregory Hainaut 1557f82b11 gsdx:clut: comment old unused clut code 2015-08-08 09:17:21 +02:00
Gregory Hainaut d822b6bd1a gsdx-ogl: add some comments for the future 2015-08-08 09:17:06 +02:00
Gregory Hainaut b17803bb34 gsdx-ogl: wipeout of GL_ARB_bindless_texture
Code is completely broken. It doesn't help to improve speed.

Remove 200 lines ;)
2015-08-08 09:16:49 +02:00
Gregory Hainaut b3919fde95 gsdx-linux: remove an old delay that pollute my benchmark mode
Also add a glFinish to ensure rendering is done
2015-08-08 09:16:13 +02:00
gabest11 d826d925db gsdx: eliminated a few bugs in the texture size changer algorithm 2015-08-07 02:08:29 +02:00
Jonathan Li c09501ad9a gsdx:linux: Add GSDrawingContext.cpp to CMakeLists.txt
Fixes the missing symbol error.
2015-08-06 18:17:28 +01:00
Gregory Hainaut 39ce8835f7 gsdx:linux: use unordered hash
It seems a bit faster on 'perf' tool
2015-08-05 22:55:12 +02:00
Gregory Hainaut 921b22ac31 gsdx-ogl: drop useless parameter of OMSetDepthStencilState 2015-08-05 22:55:12 +02:00
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
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
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
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
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
Gregory Hainaut e3751f6cd9 glsl: disable computing of extra alpha coeff in SW blending
Hum, I'm curious of the impact to enable only this code when it is actually used.
2015-07-17 21:08:49 +02:00
Gregory Hainaut 784822a5c2 glsl: redo blending management to use A/B/C/D directly
1/ Code is much more readable
2/ It will allow to round differently the operation in the future
2015-07-17 21:08:49 +02:00
Gregory Hainaut e245b27c97 gsdx-ogl-debug: allow to dump various ps shader
Nvidia allows to get the ASM of the shader of the compiled shader. It is useful
to check the performance.

It also allow me to compile most of shader code path for QA

Dump is enabled in linux replayer + debug_glsl_shader = 2
2015-07-17 21:08:48 +02:00
Jonathan Li 6c300288f9 gsdx: windows: Make GSReplay work for OpenGL
On Windows, GSReplay does not work with the OpenGL hardware and software
renderer. Make it work.
2015-07-15 20:40:47 +01:00
Gregory Hainaut 6ed137dc9c gsdx-ogl: log openGL driver version 2015-07-13 12:35:55 +02:00
Gregory Hainaut c9d6ce3b63 Merge pull request #653 from PCSX2/texture-shuffle-again
gsdx: texture shuffle detection
2015-07-12 18:48:00 +02:00
Gregory Hainaut 8be32e4661 gsdx-tc: fix a memory leak when depth isn't fully supported
Fix issue #642
2015-07-12 17:57:42 +02:00
Gregory Hainaut f6f28042bd gsdx: texture shuffle detection
Don't check rt 32 bits state, it give false positive on suikoden
2015-07-12 15:21:04 +02:00
Gregory Hainaut c660ea858b gsdx: move some CRC hacks to full level 2015-07-11 15:14:11 +02:00
Gregory Hainaut 5f8d3b9e4b gsdx-tc: remains in the memory
avoid a crash with kungfu panda
2015-07-11 14:35:35 +02:00
Gregory Hainaut a4bad8fdbc gsdx-ogl: avoid a bad conflict between accurate option 2015-07-11 14:35:35 +02:00
Gregory Hainaut 15b934eb2a gsdx-ogl: remove useless colclip message 2015-07-11 14:35:35 +02:00
Gregory Hainaut 91fbe6f108 gsdx-ogl: add some code to fix black netting on some renderings
Code is not yet enabled because it requires extensive test

The idea is to replace point by a 1 pixels sprite with the help of
a geometry shader. In 4x, point will be replaced by a 4x4 sprite.
2015-07-11 14:35:35 +02:00
Gregory Hainaut 5e7ce63ed1 glsl: add a geometry shader to upscale GS_POINT
The purpose is to avoid upscaling issue on POINT rendering (black netting on some FMVs)
2015-07-11 14:35:34 +02:00
Gregory Hainaut 2ccf108534 gsdx-ogl: add back a selector for the Geometry Shader 2015-07-11 14:35:34 +02:00
Gregory Hainaut 7f7f6c3b51 Merge pull request #640 from turtleli/gs-frame-title-fixes
GS frame title fixes
2015-07-11 09:47:27 +02:00
Gregory Hainaut 5ed45b6806 Merge pull request #644 from PCSX2/improve-texshuffle-detection
Improve texshuffle detection
2015-07-11 09:34:33 +02:00
Gregory Hainaut ec61ad3667 gsdx-tc: Add some code for the future
Partially invalidate RT when there is a write in the middle of it (actually 2 pages below)

Code is not yet enabled because
1/ I want to stabilize latest update
2/ not sure of the impact of the code
3/ maybe it need a more generic version
2015-07-10 22:35:26 +02:00
Gregory Hainaut 5888913052 gsdx-debug: don't print any "notify" message
Too verbose
2015-07-10 22:35:26 +02:00
Gregory Hainaut 6f9a89dcf2 gsdx-debug: print memory usage of all textures pools
It is a bit crude but it allow to see the impact of code and options.
2015-07-10 22:35:26 +02:00
Gregory Hainaut 350db223d3 gsdx: only propagate texture shuffle detection if tex shuffle is detected 2015-07-10 14:06:39 +02:00
Gregory Hainaut 22f11958e9 gsdx: better detection of texture shuffle
Some effects were missed on Wallace & Gromit
2015-07-09 23:05:07 +02:00
Gregory Hainaut ad86bb5faa gsdx-tc: clear 32 bits state after vsync
Avoid issue on game that uses only 16 bits RT
2015-07-09 23:03:55 +02:00
Jonathan Li bff1b2a3bf GSdx: Show plugin info in title bar when paused
When GSdx is paused by opening the config panel, GSdx does not pass any
info back to PCSX2. Pass the plugin name and renderer even when paused.
2015-07-09 16:11:26 +01:00
Gregory Hainaut 4fcf460447 gsdx: fix DoC black screen video
The game also set both depth and rt buffer at the same location
but disable the depth test (ZTE is 0)
2015-07-09 16:20:43 +02:00
Akash a02a9aac8f Fix a Function name typo. 2015-07-07 21:26:04 +05:30
Gregory Hainaut 345efed473 Merge pull request #633 from ssakash/patch-22
Update the variable name and region of the CRC hack used for Superman
2015-07-07 15:27:08 +02:00
Akash f39aa181cc Update the variable name to suit the game's original name and change to accurate region of the game. 2015-07-06 00:59:35 +05:30
Gregory Hainaut 986754bde7 glsl: don't declare gl_FragDepth
Fix compilation issue on Mesa driver

(hope it doesn't break Catalyst)
2015-07-05 18:12:36 +02:00
Gregory Hainaut edc9d23566 gsdx: fix a crash with UserHacks_ColorDepthClearOverlap 2015-07-05 14:13:24 +02:00
Gregory Hainaut e1144d7a18 gsdx:hack: add a CRC for SuperMan
Extracted from the GS dump
2015-07-05 14:11:35 +02:00
Gregory Hainaut 95e1cd9ea8 gsdx-tc: don't considerer frame as a 32 bits RT
Frame is always 32 bits but game can reuse it later as a 16 bits RT.

Fix half screen issue with Ricky Ponting Cricket

Unfortunately it triggers texture shuffle wrongly. I hope there is no
regression.
2015-07-04 11:00:32 +02:00
Gregory Hainaut 8640b44e02 gsdx-hack: implement a hack for SuperMan (need CRC to enable it)
Fix depth issue.

First issue: RT and Depth are located at the same address.
=> solution, just lookup the depth (done for any games)

Second issue: Instead to draw a X,Y rectangle, they draw a 32 pix, 4096 pix
rectangle with a FBW of 1.
=> solution, don't bother just write the depth directly

Please someone add some CRC to enable the code
2015-07-04 10:59:21 +02:00
Gregory Hainaut 0a07762f6b gsdx-tc: only track 32 bits fmt if the texture is not a palette fmt
Fix a regression on ricky ponting cricket (texture shuffle was triggered without any valid reason)
2015-07-03 23:04:48 +02:00
Gregory Hainaut b9bc5b5c60 gsdx: add UserHacks_ColorDepthClearOverlap to test some new code
debug only
2015-07-03 22:13:35 +02:00
Gregory Hainaut 621d1d93db gsdx-linux: drop the logz option
logz will only enabled if GL_ARB_clip_control is not found.

Note: logz will likely break depth support. Be sure to use a recent driver
2015-07-03 21:29:49 +02:00
Gregory Hainaut 82ed6eac13 gsdx-linux: remove alpha hack from the GUI
Normally you don't need it anymore on OpenGL :)

You can still use this option from the ini file for debug purpose
2015-07-03 21:24:17 +02:00
Gregory Hainaut abec4bd760 gsdx-ogl: don't enable aout when using accurate fbmask 2015-07-03 21:21:56 +02:00
Gregory Hainaut d71b2c1ded gsdx: update accurate fbmask tooltip 2015-07-03 21:21:08 +02:00
Gregory Hainaut 4dbe71cba8 gsdx-ogl: disable SW blending when running DATE GL42
// GL42 interact very badly with sw blending. GL42 uses the primitiveID to find the primitive
// that write the bad alpha value. Sw blending will force the draw to run primitive by primitive
// (therefore primitiveID will be constant to 1)
2015-07-03 20:34:52 +02:00
Gregory Hainaut 705c88f193 gsdx-ogl: disable blending when cleaning integer texture
Avoid a warning message on Nvidia
2015-07-03 20:26:56 +02:00
Gregory Hainaut c6f026ee68 gsdx-tc: keep 32 bits status when converting from/to depth
Partially fix conan effect
2015-07-03 19:02:44 +02:00
Gregory Hainaut 0c12f232ca gsdx-ogl: don't write depth in first step of DATE 42
Fix shadows in Fifa
2015-07-02 21:08:47 +02:00
refractionpcsx2 193f47ebb1 Merge pull request #616 from ssakash/patch-22
swap value functions for Round sprite hack.
2015-07-02 19:33:03 +01:00
Gregory Hainaut 28815db7cc gsdx: fix depth option 2015-07-02 19:13:38 +02:00
Akash 6f515b220e update the description text 2015-07-02 01:39:55 +05:30
Gregory Hainaut de644c5437 Merge pull request #628 from PCSX2/gsdx-depth-and-16-bits-support
Gsdx 1.0
2015-07-01 20:50:09 +02:00
Gregory Hainaut cd8e31d85f gsdx-ogl: always copy date to offset 0,0
Fix snow engine game on driver that don't support yet GL_ARB_copy_image
(Mesa drivers)
2015-07-01 18:27:20 +02:00
Gregory Hainaut 831c24de51 gsdx-dx: only enable new code when CRC is below FULL level
Code is not ready. It allow to test the new code without a massive
regression
2015-07-01 09:36:54 +02:00
Gregory Hainaut 074881228d gsdx:comment: small explanation of the half offset hack 2015-07-01 09:36:54 +02:00
Gregory Hainaut 76f96ddbb6 gsdx-tooltip: MSAA is not implemented on OpenGL 2015-07-01 09:36:54 +02:00
Gregory Hainaut 50c9988018 gsdx-ogl: disable all accurate options when not supported + No Intel support on windows 2015-07-01 09:36:54 +02:00
Gregory Hainaut a9f49ab9ab glsl: fix rounding error for shadow computation
Better shadow on Castlevania/Nemo (others :) )
2015-07-01 09:36:54 +02:00
Gregory Hainaut d46e41533d gsdx: remove various CRC of the openGL level
It is mostly the texture shuffle effect which is now emulated correctly on openGL

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

Remove old commented hack: Drakengard2, ArctheLad, ReZ

Separate hacks that are only enabled in aggressive mode
2015-07-01 09:36:54 +02:00
Gregory Hainaut be1403cdc2 gsdx-ogl: support texture shuffling on !FST
Mostly fix "Finding Nemo"

It remains a shadows issue when you enable accurate_fbmask and depth
2015-07-01 09:36:54 +02:00
Gregory Hainaut beafbd9768 gsdx: add a warning for the future 2015-07-01 09:36:54 +02:00
Gregory Hainaut 6121677aa1 gsdx-tc: use a single shader pass to convert texture in 8 bits format
It might save a couple of fps

Add a define to test the perf if we keep only the blue channel. It brokes
the code in Prince Of Persia that use the Red/Green channel... Maybe the
speed hack :( Or find a way to replace all if with a lookup table

Note: it is only supported on OpenGL currently
2015-07-01 09:36:54 +02:00
Gregory Hainaut 2ecca529d1 gsdx-tc: log dirty target 2015-07-01 09:36:54 +02:00
Gregory Hainaut e2727f10ba glsl: fix for AMD
I hope :)
2015-07-01 09:36:54 +02:00
Gregory Hainaut 2af7dcbda2 gsdx-tc: GPU accelerate 8 bits texture when upscaling is enabled
Code unscale the texture to ease the conversion. Quality is awful (same as before)
but I'm not sure we can support an upscaled texture

Maybe the quality loss is due to the reduction without mipmap

Maybe the best solution will be to add an hack to extract the blue channel
(with texture swizzle), and uses a "full page/screen" spirte instead.
(it would be faster too)

Note: won't be compatible with MSAA (but gl doesn't support it anyway)
2015-07-01 09:36:54 +02:00
Gregory Hainaut 6ca7a802bf gsdx-tc: add a big comment to explain the scaling of src in TC 2015-07-01 09:36:54 +02:00
Gregory Hainaut d29e375f72 gsdx-tc: GPU accelerate 8 bits texture conversion
Only native is supported currently
2015-07-01 09:36:54 +02:00
Gregory Hainaut a8bcc760b4 gsdx-tc: only clean RT in openGL
It is a debug feature for myself
2015-07-01 09:36:54 +02:00
Gregory Hainaut 3f6edc39cf gsdx-linux-gui: update option
Add mipmap for SW
Add tc depth for HW

Remove nvidia MT, always on
2015-07-01 09:36:54 +02:00
Gregory Hainaut db5468afcf glsl: fix shadow on Shin Megami Tensei Nocturne 2015-07-01 09:36:54 +02:00
Gregory Hainaut 61a717db14 gsdx-tc: clean the RT in debug build
// In theory new textures contain invalidated data. Still in theory a new target
// must contains the content of the GS memory.
// In practice, TC will wrongly invalidate some RT. For example due to write on the alpha
// channel but colors is still valid. Unfortunately TC doesn't support the upload of data
// in target.
//
// Cleaning the code here will likely break several games. However it might reduce
// the noise in draw call debugging. It is the main reason to enable it on debug build.
//
// From a performance point of view, it might cost a little on big upscaling
// but normally few RT are miss so it must remain reasonable.
2015-07-01 09:36:53 +02:00
Gregory Hainaut 99b03b4632 gsdx-debug: log all write (texture) from the EE
It is verbose but it might help to understand the invalidation of texture
2015-07-01 09:36:53 +02:00
Gregory Hainaut e66aac8ab7 gsdx-hw: add an hidden option to preload the final frame with GS mem data
Game can directly uploads a background or the full image in
"CTRC" buffer. Previous code was a full black screen.

It will also avoid various black screen issue in gs dump.

hidden option: preload_frame_with_gs_data

Note: impact on upscaling was not tested and it's likely broken
2015-07-01 09:36:53 +02:00
Gregory Hainaut a751db5f2b gsdx-ogl: merge 2 log (too verbose otherwise) 2015-07-01 09:36:53 +02:00
Gregory Hainaut 85543db094 gsdx-tc: trace the alpha channel update in TC
Improve the rendering in MGS3 (even if the game is still broken
due to others TC issues)

// Typical bug (MGS3 blue cloud):
// 1/ RT used as 32 bits => alpha channel written
// 2/ RT used as 24 bits => no update of alpha channel
// 3/ Lookup of texture that used alpha channel as index, HasSharedBits will return false
//    because of the previous draw call format
//
// Solution: consider the RT as 32 bits if the alpha was used in the past
2015-07-01 09:36:53 +02:00
Gregory Hainaut 4a65e5e723 gsdx-tc: don't try to read a 0 pixels texture
"Regression" introduced in 8 bits RT support

The case appears when
1/ address of RT is the same as input texture
2/ input format is 8 bits
3/ previous lookup of RT was miss
2015-07-01 09:36:53 +02:00
Gregory Hainaut a588f61a8a gsdx: add an assert for unsupported case 2015-07-01 09:36:53 +02:00
Gregory Hainaut 9802ba6621 gsdx-tc: add support of pseudo 8 bits RT conversion
Code is obviously slow but at least it works.

It fixes the blur effect of VP2
2015-07-01 09:36:53 +02:00
Gregory Hainaut 77e718c61f gsdx: disable linear interpolation when converting texture in texture cache
It avoid various upscaling glitches on GS post-processing effect

// 1/ Palette is used to interpret the alpha channel of the RT as an index.
// Star Ocean 3 uses it to emulate a stencil buffer.
// 2/ Z formats are a bad idea to interpolate (discontinuties).
// 3/ 16 bits buffer is used to move data from a channel to another.
//
// I keep linear filtering for standard color even if I'm not sure that it is
// working correctly.
// Indeed, texture is reduced so you need to read all covered pixels (9 in 3x)
// to correctly interpolate the value. Linear interpolation is likely acceptable
// only in 2x scaling
//
// Src texture will still be bilinear interpolated so I'm really not sure
// that we need to do it here too.
//
// Future note: instead to do
// RT 2048x2048 -> T 1024x1024 -> RT 2048x2048
// We can maybe sample directly a bigger texture
// RT 2048x2048 -> T 2048x2048 -> RT 2048x2048
// Pro: better quality. Copy instead of StretchRect (must be faster)
// Cons: consume more memory
//
// In distant future: investigate to reuse the RT directly without any
// copy. Likely a speed boost and memory usage reduction.
2015-07-01 09:36:53 +02:00
Gregory Hainaut ae3b768de9 bump gsdx version to 1.0.0 2015-07-01 09:36:53 +02:00
Gregory Hainaut 839003467e gsdx-ogl: add support of partial frame buffer masking
It might help to fix a bit the color on a couple of games

accurate_fbmask = 1

Code uses GL4.5 extensions. So far it seems the effect is ony used a couple
of time and often in non-overlapping primitive. Speed impact will likely remain small
2015-07-01 09:36:53 +02:00
Gregory Hainaut 87f54ae0ff gsdx: report error on unsupported case in texture cache
It seems to impacts lots of games that still have issue (VP2, MTG3, PoP)

The PSMT32 format is read a PSMT8. I think we need to convert it as PSMT8H (i.e.
unpack it to have only an alpha channel)
2015-07-01 09:36:53 +02:00
Gregory Hainaut 82818dab3c gsdx-ogl: make some room in AlphaCoefficient variable
The idea will be to use the remaining int to store the FB mask
2015-07-01 09:36:53 +02:00
Gregory Hainaut 3b127f663b gsdx-tc: trace the texture format to detect texture shuffling
It fixes games that uses 16 bits RT (like snow engine games)
2015-07-01 09:36:53 +02:00
Gregory Hainaut 33c9e9da0a gsdx: new generic OI hack
To clear a (W, H) RT/Depth, GS can only send a (W , H/2) primitive with
a Z (or RT) pointer in the middle of the buffer

Top-half will be cleared by the color (or the depth).
Bottom-half will be cleared by the depth (or the color).

Code isn't enabled yet but it was tested with success on GoW2.
2015-07-01 09:36:35 +02:00
Gregory Hainaut 42e911c78f gsdx-ogl: mask alpha channel in depth conversion
Might not work if depth is recasted as a rt (we lost the alpha channel)
2015-07-01 09:30:20 +02:00
Gregory Hainaut 05c72980fc gsdx: avoid to detect PSMT8H as 16 bits 2015-07-01 09:30:20 +02:00
Gregory Hainaut b62a2d6a3c gsdx-debug: dump texture in 32 bits when a shuffing effect is detected
Otherwise it is unreadable
2015-07-01 09:30:20 +02:00
Gregory Hainaut 6b5a3dedd9 gsdx-debug: add the format in texture cache logging 2015-07-01 09:30:20 +02:00
refractionpcsx2 955fc3aa35 GSdx-DX: Mirror round value change from OGL 2015-07-01 09:30:20 +02:00
refractionpcsx2 af09d7e063 GSdx-DX: Modified shader slightly as some bits were incorrect. 2015-07-01 09:30:20 +02:00
Gregory Hainaut 7ee3dbd615 gsdx-tc: use the virtual function to check the state
This ways it will be disabled for dx
2015-07-01 09:30:20 +02:00
refractionpcsx2 de189b67a2 GSdx: Add option to toggle Texture Cache Depth support.
- Forced off for DX currently to save fallover.
2015-07-01 09:30:20 +02:00
refractionpcsx2 2dc4e2a04c GSdx: Gave accurate blend option an extra state, can now do super accurate blending from the GUI 2015-07-01 09:30:20 +02:00
Gregory Hainaut c925b1d135 gsdx-tc: support GS mem to depth buffer transfer
Please test SMT games

(issue #572)
2015-07-01 09:30:20 +02:00
refractionpcsx2 4bc8bfc23e GSdx-DX: Rough port of texture switching from OGL 2015-07-01 09:30:20 +02:00
Gregory Hainaut 58ce7d4bb8 gsdx-ogl: emulate texture shuffle
GS doesn't supports texture shuffle/swizzle so it is emulated in a
complex way.

The idea is to read/write the 32 bits color format as a 16 bit format.
This way, RG (16 lsb bits) or BA (16 msb bits) can be read or written with
square texture that targets pixels 1-8 or pixels 8-16.
However shuffle is limited. For example you can copy the green channel
to either the alpha channel or another green channel.

Note: Partial masking of channel is not yet implemented

V2: improve logging
V3: better support of green channel in shader
V4: improve detection of destination (issue due to rounding)
2015-07-01 09:30:20 +02:00
Gregory Hainaut 2d812deb84 gsdx-tc: Depth and Target are interchangeable on the GS !!!
Extend the texture cache to search Color target in Depth target
2015-07-01 09:30:20 +02:00
Gregory Hainaut 76160505f7 gsdx-tc: add an option to avoid blow up dx :p
texture_cache_depth = 1 (default for openGL)
2015-07-01 09:30:20 +02:00
Gregory Hainaut 74d84aafb5 gsdx-tc: allow to search the depth in the old target list
Yes it is possible on PS2 world
2015-07-01 09:30:20 +02:00
Gregory Hainaut b59a347ad7 gsdx-tc: allow to use depth buffer as input texture 2015-07-01 09:30:20 +02:00
Gregory Hainaut 49516cbbca gsdx-tc: allow to invalidate the depth/target if it is used as target/depth
It is requires when game will uses sometimes an address as a RT sometimes as a depth
2015-07-01 09:30:20 +02:00
Gregory Hainaut 35081f922a gsdx: GS kinds of support draw without framebuffer
Gow uses 24 bits buffer, so only color is updated but blending is configured as Cd
so it is a NOP

In this case, we don't lookup the target in the texture cache. It reduces the complexity
to handle depth which can be located at same address as RT

Note: please test DX renderer
2015-07-01 09:30:20 +02:00
refractionpcsx2 c659b1aa18 Merge pull request #617 from ssakash/patch-26
Console log message for current renderer.
2015-06-28 13:24:09 +01:00
bositman 59a66f87c3 Merge pull request #611 from turtleli/fix-toggling
Fix renderer toggling behavior and other related stuff
2015-06-26 16:34:02 +03:00
Jonathan Li acc6ad59ba GSdx: Use correct renderer after config change
Rework the renderer selection logic to reload the saved renderer after
it's been changed in the config panel and to properly detect whether a
renderer toggle has been requested.
2015-06-26 00:50:07 +01:00
Akash 4b472bb461 Console log message for current renderer. 2015-06-25 20:15:45 +05:30
Akash 1d4dff9e42 Remove break statement (return already ends the function execution) 2015-06-25 19:48:22 +05:30
Gregory Hainaut f3c0c1bb88 gsdx-ogl: TexParamami is provided in core 2015-06-25 10:25:57 +02:00
Gregory Hainaut 8393ba56d6 gsdx-ogl: rework palette texture handling
Redirect the red channel to alpha channel for 8 bits texture.

It avoid special management in the shader
2015-06-24 19:50:09 +02:00
Gregory Hainaut cd4c8b5ce4 gsdx-debug: resolve alpha equation in the dump file 2015-06-24 19:42:53 +02:00
refractionpcsx2 ee9b1caaa4 GSdx-hw: Custom res native mixup stuff, best fix this one too. 2015-06-23 19:43:04 +01:00
Akash 85c4184ea5 swap value functions for Round sprite hack. 2015-06-23 20:07:46 +05:30
refractionpcsx2 ad71ca4cc8 GSdx-hw: Make sure custom resolution doesn't affect Native Resolution 2015-06-22 17:23:47 +01:00
Gregory Hainaut 7135867119 gsdx: very old typo on option name
Windows uses Renderer with an uppercase R
2015-06-20 16:18:10 +02:00
Gregory Hainaut b44bccec6a gsdx: fix previous commit with a scaling factor 2015-06-18 23:02:40 +02:00
Gregory Hainaut 5bc8f046b2 gsdx: fix snow engine issue in native resolution 2015-06-18 21:21:25 +02:00
Karasuhebi 4d1ca4bb76 Changes in title bar: DX -> D3D
Changed the name of the Direct3D renderers so they would match the way
they are named in GSdx's Plugin Settings window. Also changed a printf
to say OpenCL instead of opencl.
2015-06-18 13:00:29 -04:00
Gregory Hainaut ab6f26ff4d Merge pull request #606 from turtleli/gsdx-title-renderer
GSdx: Add renderer type to title bar
2015-06-18 09:49:26 +02:00
refractionpcsx2 f5e8503fa5 GSdx: Didn't need to change this :P 2015-06-17 22:41:16 +01:00
refractionpcsx2 c31c04d3db GSdx: Fix CRC hacks not re-initialising after option change 2015-06-17 22:25:43 +01:00
refractionpcsx2 0b5e0df35d Epic fail Visual Studio! 2015-06-17 22:11:06 +01:00
refractionpcsx2 fc24f039a8 GSdx: Add CRC Management to Windows Dialog.
- Clean up tooltip
- Remove Auto Skip Depth and Disable CRC checkboxes
2015-06-17 22:06:18 +01:00
Jonathan Li e182251fbc GSdx: Add renderer type to title bar 2015-06-17 21:59:05 +01:00
Gregory Hainaut 1d84af573d ofc I didn't test previous commit ater the merge... 2015-06-17 21:55:37 +02:00
Gregory Hainaut b2f8fe3593 gsdx: drop the auto skip depth hack
Just use 1 in skip draw if you want to use it

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

Conflicts:
	plugins/GSdx/GSState.cpp
	plugins/GSdx/GSState.h
2015-06-17 21:53:08 +02:00
Gregory Hainaut 263583ebcc Revert "gsdx-ogl: enable again geometry shader on Mesa"
This partially reverts commit e774fecb77.

Fix issue #605
2015-06-16 18:33:22 +02:00
Gregory Hainaut c1d39a5f57 gsdx-ogl: drop UserHacks_DateGL4
Initial goal was to avoid slowdown in buggy driver
2015-06-16 09:57:45 +02:00
Gregory Hainaut 62beb3aaf4 gsdx: don't do bad stuff if aggressive hack isn't enabled 2015-06-14 10:27:02 +02:00
Gregory Hainaut f765a195e2 gsdx: Don't set CRC function pointer when disabled
Less costly than an extra check for each draw calls
2015-06-14 10:27:02 +02:00
Gregory Hainaut 1699289162 gsdx: move 4 hacks from level2 to level3
remains tons of them :(
2015-06-14 10:27:02 +02:00
Gregory Hainaut 1be8d07f85 gsdx: auto CRC management
Old way various check boxes to configure the plugin

New way an unified drop down list

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

Note: windows gui must be updated, and it will be nice to create a global tooltip
2015-06-14 10:27:02 +02:00
Gregory Hainaut c6220bf836 gsdx-debug: print an error on unsupported draw call
Typically GTA
2015-06-14 10:27:02 +02:00
Gregory Hainaut c11ac928ba Merge pull request #599 from ssakash/patch-12
inclusion of jap version of dr2 in gscrc.cpp
2015-06-11 09:45:41 +02:00
Gregory Hainaut 237ffcf796 gsdx-ogl: Make GL_ARB_draw_buffers_blend optinal for limited DX10 drivers 2015-06-10 22:55:27 +02:00
Akash 343ecca6ba crc hack 2015-06-10 20:13:27 +05:30
Gregory Hainaut cbcb7962ce Merge pull request #593 from turtleli/gsdx-cleanup-and-fixes
Gsdx cleanup and fixes
2015-06-10 08:14:44 +02:00
Jonathan Li b1acc08c58 GSdx: Linux: Fix wording 2015-06-09 19:30:16 +01:00
Gregory Hainaut 4e82073bfc gsdx-ogl: improve setting bilinear of palette
Instead to disable it, uses GS settings
2015-06-09 09:53:50 +02:00
i30817 4e7e7f2dd5 Nocturne, DDS1 and DDS2 CRC hacks to remove motion blur and smudge filter
Signed-off-by: i30817 <i30817@gmail.com>
2015-06-09 00:25:33 +02:00
Gregory Hainaut 2503d9698c gsdx-ogl: re enable bilinear fitlering on palette for paltex mode
However keep it disabled for StarOcean 3 use cases
2015-06-08 21:01:18 +02:00
refractionpcsx2 95c2622b7f Gsdx: Typo'd! 2015-06-07 18:31:51 +01:00
refractionpcsx2 b5171dfe5d Gsdx: De-crapify Native resolution, potential fix for custom resolutions. 2015-06-07 16:57:55 +01:00
refractionpcsx2 0946958acf Gsdx: Height change on Gregory's recommendation :) 2015-06-07 16:12:14 +01:00
Gregory Hainaut c3c29945b2 gsdx-ogl: only set a cst blend factor when Ad is used
Fix GT4 and potentially FFX
2015-06-07 16:10:59 +02:00
Gregory Hainaut 5daf7aa98f gsdx-debug: keep s_n/pop in sync 2015-06-07 12:39:48 +02:00
Gregory Hainaut 5bf5b5bca4 gsdx-ogl: extend StretchRect to write in depth texture
It will allow to convert color texture to depth texture
2015-06-07 12:39:23 +02:00
Gregory Hainaut 0518aaedc9 gsdx-ogl: unattach palette to avoid noise in debug 2015-06-07 12:39:15 +02:00
Gregory Hainaut 23f8203a22 gsdx-ogl: add some shaders to convert depth <-> color
I'm afraid of rounding error
2015-06-07 12:39:00 +02:00
Gregory Hainaut a5fe8478ae Merge pull request #575 from PCSX2/gsdx-half-screen-snow-engine-v2
gsdx-texture-cache: Improve fix for snow engine game
2015-06-07 10:18:56 +02:00
refractionpcsx2 0a467291f9 Gsdx: Height thing didn't work so well, using old buffer width test again 2015-06-07 03:50:34 +01:00
Gregory Hainaut 0e3349f953 Merge pull request #590 from PCSX2/OpenGL-printf-corrections-removed-shadow-hearts-crc
OpenGL printf wording corrections, removed Shadow Hearts CRC
2015-06-06 21:56:07 +02:00
bositman 1de58349c5 Bleh 2015-06-06 22:39:34 +03:00
bositman 8d61ab2af2 OpenGL printf wording corrections, removed Shadow Hearts CRC (not used anymore in GSstate)
Some minor grammar fixes to OpenGL prints and removed Shadow Hearts CRC
which has been left behind
2015-06-06 22:28:59 +03:00
refractionpcsx2 1fa13163e4 GSDX: Fix for games which change height but keep the same buffer width
- Fix for games that specify a double height, like Pool Paradise
2015-06-06 20:24:10 +01:00
Gregory Hainaut 97467f9e30 Merge pull request #579 from PCSX2/drop-vs2010-support
Drop vs2010 support
2015-06-06 10:47:16 +02:00
Gregory Hainaut 68e44fd354 gsdx: reload the state when GSconfigure is called
It fixes the reloading of openGL option and it avoids
issue during pause/resume.

Fix issue #584
2015-06-06 08:51:53 +02:00
Gregory Hainaut 7e662c50d4 Revert "gsdx: always restore the full gs state object (s_gs)"
This reverts commit 2ea049b5a5.
2015-06-06 00:22:15 +02:00
Gregory Hainaut 4feeaac7d1 Merge branch 'alignment' of git://github.com/xsacha/pcsx2 into xsacha-alignment
Gregory: Get all changes but keep C11 code path which will be the future
 (if someone can find info on Visual Studio support)
* Keep the old posix api to use address sanitizer on gcc 4.9

Conflicts:
	common/build/Utilities/utilities.vcxproj.filters
	common/build/Utilities/utilities_vs2012.vcxproj.filters
	common/build/Utilities/utilities_vs2013.vcxproj.filters
	common/include/Utilities/MemcpyFast.h
	common/include/Utilities/StringHelpers.h
	common/src/Utilities/AlignedMalloc.cpp
	common/src/Utilities/vssprintf.cpp
	plugins/GSdx/stdafx.cpp
2015-06-05 20:31:14 +02:00
Gregory Hainaut e774fecb77 gsdx-ogl: enable again geometry shader on Mesa
Please use a recent Mesa version (10.5 if possible)
2015-06-05 18:59:10 +02:00
Gregory Hainaut 6c8f7a0147 Merge pull request #580 from PCSX2/issue-565-option
gsdx: always restore the full gs state object (s_gs)
2015-06-05 17:51:02 +02:00
Gregory Hainaut 7d124e6a83 gsdx-texture-cache: Improve fix for snow engine game
Instead to hardcode the half-buffer size to 0x140, the new code
compute it.

To avoid regression, I limit the code to big target (>= 1024 pixels)
2015-06-05 09:06:12 +02:00
refractionpcsx2 65b83a36a7 GSDX: Removed some printf's I left in. 2015-06-05 00:13:21 +01:00
refractionpcsx2 91f775f3f0 GSDX: Fixed up some of the scaling height settings
-Last commit broke Snowblind games again
-Width now based on output circuit
-Try to use the smallest possible while being at least the size of the screen
2015-06-05 00:12:15 +01:00
Gregory Hainaut 6f4ec98bc3 gsdx: try to reduce the size of target as much as possible
I suspect too consume too much memory (issue #576)
2015-06-04 22:15:52 +02:00
Gregory Hainaut f8f6117ea9 gsdx-debug: allow to track texture move
Very painful for the cache and the performance
2015-06-04 22:10:04 +02:00
Gregory Hainaut 979ea92754 gsdx: make png++ optional
Some distributions (Fedora) doesn't have a png++ package...
2015-06-04 20:22:05 +02:00
Gregory Hainaut bd2c04a0ec ooups bad copy/past 2015-06-04 19:58:58 +02:00
Gregory Hainaut 2ea049b5a5 gsdx: always restore the full gs state object (s_gs)
It will force a reload of opengl option
2015-06-04 18:29:31 +02:00
Gregory Hainaut c2e851b3a5 gsdx-ogl: don't use slow SW blend for nothing
When A == B, coeff is 0 so <= 1
When C == 2, just check the value of coeff

Barely faster in accurate_blend = 2
2015-06-04 18:18:47 +02:00
Gregory Hainaut ba5b367ae8 drop support of Visual Studio 2010
* Severals PR uses C++11 features
* 2015 will soon be released
* Win 10 will soon be released

Time to upgrade
2015-06-04 08:55:22 +02:00
Gregory Hainaut 85266abd71 gsdx-ogl: use a 8MB vbo/ibo
Dirge of Cerberus draw 143,360 vertices in a single draw!

It is likely to emulate a particle effects

Hopefully improve issue #573
2015-06-04 08:28:40 +02:00
bositman e34477a497 Merge pull request #547 from pgert/master
GSdx > HW-hacks > Rewording comments on duplicate CRC's and minor cleanup
2015-06-03 15:58:28 +03:00
Gregory Hainaut 0d5d94f56e Merge pull request #570 from ssakash/patch-3
Three new Opengl settings for Windows [GUI]
2015-06-03 14:01:39 +02:00
Gregory Hainaut 3dd3bf6e2b gsdx-ogl: new hidden option accurate_blend = 2
Debug option to emulate all blending draw call in the shader

Of course it is slow but it is very accurate
2015-06-03 09:56:07 +02:00
Gregory Hainaut cd6c93cd9e gsdx: silly mistake 2015-06-03 09:31:52 +02:00
Akash f2d193edcf Add three new Opengl options. 2015-06-02 16:02:56 +05:30
Gregory Hainaut 995ae51bf4 gsdx-ogl: disable a log message
Too verbose and code was fixed anyway
2015-06-02 09:28:35 +02:00
Gregory Hainaut 9fe13f7a6b gsdx linux: fix a memory leak
Not important but pollute the valgrind log
2015-06-02 09:28:35 +02:00
refraction 4914620178 GSDX: Fix for 6x Native, fixed GH3 in native mode taking up quarter of the screen after the snowblind changes 2015-06-01 19:04:39 +01:00
Gregory Hainaut 2cbde89084 Merge pull request #555 from PCSX2/real-fb-format
GSdx: better framebuffer format
2015-06-01 11:48:07 +02:00
Gregory Hainaut f81cf360bc Merge pull request #545 from PCSX2/gsdx-half-screen-snow-engine
Gsdx half screen (most of) snow engine games
2015-06-01 11:47:40 +02:00
Gregory Hainaut 9fa473a57d gsdx-ogl: glDebugMessageCallback is optional
Not even used in release build
2015-05-31 17:55:34 +02:00
Gregory Hainaut 9d69ff1f91 gsdx-debug: create the savef option
The idea is to easily extract bad frame from gs dump and to compare them
with the sw renderer.

Here the summary of the options:
savet => dump all input textures
save  => dump the render target
savez => dump the depth buffer
savef => dump the frame
2015-05-31 17:38:52 +02:00
Gregory Hainaut d301848848 gsdx-ogl: fix paltex on opengl
RT uses as palette must use the alpha channel

Palette texture uses the red channel
2015-05-30 19:01:09 +02:00
Gregory Hainaut 2f2ae2bc89 gsdx-ogl: enable gl tracing on windows
Trace info is enabled in dbg/dev build for the opengl renderer

Info is stored in GSdx_opengl_debug.txt when debug_opengl option is 1
2015-05-30 09:58:47 +02:00
Gregory Hainaut 009dd103ae gsdx-ogl: protect the trace with if statement
And mark the function as optional
2015-05-30 09:58:46 +02:00
Gregory Hainaut a639634769 gsdx-ogl: actually code use 4.0 GL_ARB_draw_buffers_blend
It is used for glBlendEquationSeparateiARB && gl_BlendFuncSeparateiARB

The 3.0 function could work too. It just need to be added
2015-05-30 09:58:46 +02:00
Gregory Hainaut 92d68b70d3 gsdx-ogl: add a performance note for later
The idea will be to replace StretchRect for standard case with a framebuffer
blit. Potentially it toggles less gl state.

Worth a test on Star Ocean 3 that uses a lots this function for stencil emulation
2015-05-30 09:58:46 +02:00
Gregory Hainaut 01e4a5148d gsdx-ogl: avoid crash in debug/dev build
Don't be silly, don't put gl trace in EE thread.
2015-05-29 16:50:27 +02:00
Gregory Hainaut 0cb6c37f14 gsdx-tc: add an explanation of the magic number 0x140 2015-05-29 12:27:05 +02:00
refraction 97b237712c gsdx: detect RT size based on fb size and gs output configuration
* It is required for snowbling games
* Targets of Texture cache are dropped.
2015-05-29 12:26:44 +02:00
Gregory Hainaut 02274601b3 gsdx-ogl: always copy texture into 0,0 2015-05-29 12:18:54 +02:00
Gregory Hainaut e5326d1bd2 gsdx-tc: allow to reuse the right part of large RT as source 2015-05-29 12:18:54 +02:00
Gregory Hainaut 7ac533a4d1 gsdx-tc: invalidate half-RT src
snow engines uses the RT as 2 half RT.
2015-05-29 12:18:54 +02:00
Gregory Hainaut da0b77e09b gsdx-ogl: new logo
Thanks bmate for the logo.

Close issue #192
2015-05-29 11:05:52 +02:00
refraction 8f54da5fd3 GSDX: Removal of Nvidia hack.
- Hack no longer required as an option as a safe and simple workaround has been discovered which seems to work without modifying any vertices.
2015-05-28 21:41:02 +01:00
refraction 5d00c00826 GSDX: Fixed UserHacks_AutoSkipDrawDepth dialog creation on windows.
- CheckDlgButton was just wrong
- Changed tag to say "Auto-skip depth" as you could only see "Auto-skip draw" which was highly ambiguous on GSDX!
2015-05-28 21:21:19 +01:00
Gregory Hainaut 31ffdd8c53 Merge pull request #559 from ssakash/patch-5
Auto depth skip hack initialization.[GUI]
2015-05-28 19:21:45 +02:00
Gregory Hainaut 8e32d71c07 Merge branch 'patch-3' of git://github.com/ssakash/pcsx2 into ssakash-patch-3 2015-05-28 18:30:49 +02:00
Akash 5f7e09268c change "D3D Internal Resolution" to "Internal Resolution" 2015-05-28 16:33:16 +05:30
Akash bf743fec17 add logo for Opengl renderer. 2015-05-28 01:34:51 +05:30
Gregory Hainaut c43ddaec4f gsdx: add Castlevania hack explanation 2015-05-26 17:03:13 +02:00
Gregory Hainaut 419dfe0544 glsl: redo color/alpha management correction
Please test it!

GS supports 3 formats for the output:

32 bits: normal case
=> no change

24 bits: like 32 bits but without alpha channel
=> mask alpha channel (ie don't write it anymore)
=> Always uses 1.0f as blending coefficient

16 bits: RGB5A1, emulated by a 32 bits openGL texture. I think it will be more correct to use
a real 16 bits GL texture. Unfortunately it would cost several (slow) target conversions.
Anyway as a current solution
=>  apply a mask of 0xF8 on color when SW blending is used (improve Castlevania shadow)
unfortunately normal blending mode still uses the full range of colors!

This commit also corrects a couple of blending factor. 128/255 is equivalent to 1.0f in PS2, whereas GPU uses 1.0f. So the blending factor must be 255/128 instead of 2

Note: disable CRC hack and enable accurate_colclip to see Castlevania shadow ^^
(issue #380).
Note2: SW renderer is darker on Castlevania. I don't know why maybe linked to the 16 bits format poorly emulated
2015-05-26 16:49:43 +02:00
Akash ef3247c233 Update copyright license 2015-05-26 19:15:30 +05:30
Akash 99f9407c24 Auto depth skip hack initialization. 2015-05-26 19:13:56 +05:30
Gregory Hainaut 9ee3a173d0 gsdx-ogl: use a local ALPHA register
It would allow to easy tune the parameter to support 24 bits format
2015-05-26 15:36:48 +02:00
Gregory Hainaut d31bd97d59 gsdx-ogl: add a variable to select FB output
Either 32bits/24bits/16bits
2015-05-26 14:59:07 +02:00
Gregory Hainaut 93c0d5a268 gsdx-ogl: add an error message when a RT is reused with a format cast
For example a 32 bits RT could be used as a 16 bits RT.

It is likely the source of various bug in HW renderer
2015-05-26 11:16:49 +02:00
Gregory Hainaut a3bbe68d56 gsdx: throw an exception when we miss a mandatory gl feature
Gracefully quits when driver is not supported
(like nvidia legacy driver for GTX260)

Please test the impact on windows
2015-05-26 11:03:59 +02:00
Gregory Hainaut 3be5a6036b gsdx-ogl: remove assertion + debug message
opengl use a different object to compute the vertex count
2015-05-26 11:03:59 +02:00
refraction b84a462798 Unreachable code message was annoying me. 2015-05-26 00:30:12 +01:00
Gregory Hainaut 2704a65f57 gsdx: add some info for Star Ocean3/Valkyrie Profile 2/Radiata Stories
Feel free to test those games with CRC disabled on the openGL renderer (native resolution)
2015-05-25 12:37:48 +02:00
Gregory Hainaut 580d177951 gsdx: improve commit 11708486d8
This time linear filtering is disabled only for the bad draw call
(RT used as a palette texture).
2015-05-25 09:46:51 +02:00
Gregory Hainaut 99d7434671 gsdx-ogl: disable SSO on nouveau 2015-05-24 19:24:10 +02:00
Gregory Hainaut 11708486d8 gsdx: allow to control the filtering of texture cache
When the RT is used as an input texture, we need to rescale it.

Previous behavior was to always uses a linear filtering (more smooth).
Unfortunately it broke some games that expected an exact value like Star Ocean 3

This commit will disable the linear filtering in normal filtering mode (filter = 0
or filter = 2)

This way, shadow of Star Ocean 3 will appear correctly in upscaling (not
100% perfect but can't do better)

Note: SO3 only requires a nearest sampling of the alpha channel but
I don't know the behavior for others games.
2015-05-24 18:59:27 +02:00
Gregory Hainaut b0af54d33e gsdx-ogl: better support of palette
The purpose of the code is to support alpha channel
of RT uses as an index for a palette texure.

I'm afraid that code will likely break pure palette texture. Only used
if paltex is enabled

It fixes missing shadow in Star Ocean 3 (issue #374) in Native resolution
with filter = 0  (no filtering) or = 2 (normal fitering)

Rendering explanation:
The game emulates a stencil buffer with the alpha channel

The alpha channel of the RT can contains a palette texture index (format 4HH)
The idea is to have a gradient of value in the palette (16/32/48/...).
This way you can implement a +16/-16 and even wrap the alpha value every time
you hit the pixel.

Bilinear filtering breaks the rendering because it interpolates between counts
so you doesn't have the exact count

Upscaling breaks the rendering because the RT is reused as an input texture. It means
that we need to scale it down which again create some interpolations.
2015-05-24 18:07:16 +02:00
Gregory Hainaut 951a1fed94 gsdx-hack: enable auto skip of depth texture for God of War
Rendering is quite complex to emulate on the GPU due to several limitation.
Until we find a solution let's enable the old solution

You could find a description of the rendering here:
http://forums.pcsx2.net/Thread-God-of-War-Red-line-rendering-explained
2015-05-24 13:43:36 +02:00
Gregory Hainaut a70c3bf5de glsl: correct the alternate implementation of ps_main1
Still not yet enabled by default

Potentially it can be optimized with the dot product but special care
need to be taken to ensure float accuracy.

Bonus: it could work on old GPU (aka DX9)
2015-05-24 13:43:36 +02:00
Gregory Hainaut c82fd94c6c gsdx-debug: use GL_INS instead of printf 2015-05-24 13:43:36 +02:00
Gregory Hainaut c01686d252 gsdx-png: add a fixme message for 16 bits by channel image 2015-05-24 12:51:20 +02:00
Gregory Hainaut 7f614401a6 gsdx-ogl: set accurate_blend as default
Rendering is better and I think speed impact remains small.
2015-05-23 15:10:04 +02:00
Gregory Hainaut c507e816c2 gsdx-ogl: oups forget a break 2015-05-23 13:06:23 +02:00
Gregory Hainaut b884e0c0c0 gsdx-debug: improve debug experience
* Dump context before the increase of s_n
  => aligned with the global call number
* Don't print colclip not supported when it is optimized away
* dettach the input texture when it is useless
  => avoid to show a wrong texture in the debugger
2015-05-23 12:23:05 +02:00
Gregory Hainaut f665180d11 gsdx-debug: use hex number for texture pointer
Easier to grep
2015-05-23 12:20:26 +02:00
Gregory Hainaut 7609fdc576 gsdx: rename too much sr to sRect 2015-05-21 09:48:15 +02:00
Gregory Hainaut b52ee6f1f6 gsdx-linux-gui: add an option for accurate color clipping
Note: it is only for debug purpose

Sotc testcase 187 fps => 125 fps (2x scaling)
2015-05-20 09:42:22 +02:00
Gregory Hainaut 183af4ece6 gsdx-ogl: don't enable SW blending when there is no blending
Mostly to avoid useless message
2015-05-20 09:36:01 +02:00
Gregory Hainaut 3d35e4f8ec gsdx-ogl: implement all blends mode in shader
+ 250 lines !!!
2015-05-20 09:11:36 +02:00
Gregory Hainaut 2d54d59add gsdx-ogl: update assertion ps sel is 8B now 2015-05-20 08:40:08 +02:00
Gregory Hainaut d3d5a436ea gsdx-ogl: add code to read back depth texture 2015-05-20 08:07:40 +02:00
Gregory Hainaut a4c74ef872 gsdx-ogl: disable GL_DITHER
I really don't know the impact but it is not supported with integer texture.
2015-05-20 08:05:27 +02:00
Gregory Hainaut 8d3e3e6c5b gsdx-ogl: more blend rework to support accurate_colclip
So far few blending equations are implemented in PS. It is only
for test the behavior on GoW
2015-05-20 08:00:40 +02:00
Gregory Hainaut c5341a2711 gsdx-ogl: update blending management
This way it will allow to implement all blendings operartion in FS.

Of course it will be slow, but it would be nice for debug and quickly check
game error rendering.
2015-05-20 00:12:52 +02:00
Gregory Hainaut 358e0d445b gsdx-ogl: add a shader to convert depth texture into uint 2015-05-19 18:56:32 +02:00
Gregory Hainaut ac38ebbf29 Merge pull request #546 from ssakash/patch-3
enables Anisotropic filtering option for OGL (HW mode) [Windows UI]
2015-05-19 15:20:12 +02:00
Gregory Hainaut ec45090358 glsl: implement an alternative of convert 1 shader
Code not yet enabled. Quick test show no heavy regression but I need
to carefully validate it.
2015-05-19 13:14:18 +02:00
Gregory Hainaut a12acc0d24 gsdx-ogl: clean a bit Texture Cache OGL
Add a placeholder for depth format but nothing done yet.
2015-05-19 13:14:18 +02:00
Gregory Hainaut 1837001e75 gsdx: extend CopyOffscreen with a new shader parameter
Currently we're trying to infer the conversion shader based on the output format

It only works if the input data is RGBA8. It might not be true in the future
2015-05-19 13:14:18 +02:00
Gregory Hainaut 9554b5dd56 gsdx-lzma: drop CONCAT flag
I have some issue with it. Unlikely to use multi-stream gs anyway
2015-05-19 13:14:18 +02:00
Gregory Hainaut fa761a129d gsdx-linux: add an option to enable/disable recording
Avoid to kill the computer/application if the user press F12 by accident
2015-05-19 13:14:18 +02:00
Gregory Hainaut 34202933da GSdx-linux-recorder: add various option to control it 2015-05-18 19:57:21 +02:00
Gregory Hainaut 388f46b577 gsdx-png: use array interface instead of set_pixel
Doc says it is "non-checking equivalent of set_pixel". Still slow as ass

At least syntax is nicer
2015-05-18 17:25:14 +02:00
Gregory Hainaut a4d6722b26 gsdx-thread: add a CAPACITY parameter to GSJobQueue 2015-05-18 17:08:18 +02:00
Gregory Hainaut e7665ee7dd gsdx-linux-recorder: upgrade code to use n threads
Unfortunately it requires too much memory (easily 6GB)
2015-05-18 16:56:44 +02:00
Gregory Hainaut cff168e002 gsdx-linux-recorder: implement multithread to save the image
Currently only a dedicated thread. It is still too slow!
2015-05-18 16:56:44 +02:00
Gregory Hainaut 012f1b4f05 gsdx-thread: remove deprecated boost code 2015-05-18 16:55:49 +02:00
Gregory Hainaut 19d9349b0b gsdx-debug: remove old assert 2015-05-18 16:45:38 +02:00
pgert c9508298b4 Update GSCrc.cpp 2015-05-18 16:37:28 +02:00
Akash 70b8772bb4 enables Anisotropic filtering option for Opengl (Hardware mode) [Windows UI] 2015-05-18 19:16:22 +05:30
Gregory Hainaut 503459798a gsdx-linux: add a basic implementation to record the gameplay as png file
The idea was to merge them later with ffmpeg or other external tool

It kinds of work but current fps is around 2 !!! So not really usable

The speed issue is related to PNG.

So either the code to store pixels data must be optimized. Or maybe it misses some MT loves :)
2015-05-18 11:56:20 +02:00
Gregory Hainaut 2783da4a22 gsdx-ogl: use a local buffer to store offscreen texture
It will allow to read texture in // (and potentially could be useful
for recording)
2015-05-18 11:29:04 +02:00
Gregory Hainaut 79a9254894 gsdx-ogl: print some error messages if extenal shader is wrongly configured 2015-05-18 10:56:32 +02:00
Gregory Hainaut 540717b295 gsdx-ogl: don't force logz only on debug build 2015-05-18 07:24:26 +02:00
Gregory Hainaut 5c046180a1 cmake: properly add detection of lzma
Code is 100% optional.

Code will allow be enabled if lzma-dev is installed at compile time
2015-05-17 22:08:10 +02:00
Gregory Hainaut 98dde32dc0 gsdx-replayer-linux: use new code to allow loading of .gs.xz dump
A bit slower at startup but it saves a lots of disk space!

Reduce the size of my gs collection of 11GB :)
2015-05-17 22:08:10 +02:00
Gregory Hainaut e93f780268 gsdx-replayer-linux: separate a bit parsing and executing code
It would ease the porting of the code to read xz file
2015-05-17 22:08:10 +02:00
Gregory Hainaut 86e3c18c33 gsdx-linux: add code to read xz file
Linux only to avoid the extra dependency on windows
2015-05-17 22:08:10 +02:00
Gregory Hainaut 5cfb496700 gsdx-ogl: only open debug file once 2015-05-17 14:43:56 +02:00
Gregory Hainaut 7979dec5b0 gsdx-ogl: optimize colclip 0
Currently colclip uses 2 passes to wrap the output of blending unit

However some blending mode are only a plain copy (of 0 or Cs or Cd).
So no overflow of [0:255], no need to wrap it

Note: I saw those cases in GoW.
2015-05-17 13:05:08 +02:00
Gregory Hainaut 6ced837360 gsdx-debug: add some PERF info in trace
The idea is to detect easily effect that are known to be slow on opengl
2015-05-17 13:05:08 +02:00
Gregory Hainaut 818412ba26 gsdx-debug: fix a crash in trace 2015-05-17 13:05:08 +02:00
Gregory Hainaut b1ea081fc3 gsdx-debug: improve tracing interface
Basically move the format and c_str() in the macro
2015-05-17 13:05:08 +02:00
Gregory Hainaut b8aa5f8f80 gsdx-debug: more trace for the texture cache 2015-05-17 13:05:08 +02:00
Gregory Hainaut 8a73849531 gsdx-ogl: enable multithread driver by default for nvidia
+ add a linux gui option to disable it (for test purpose)
2015-05-16 15:22:20 +02:00
Gregory Hainaut c567198967 gsdx-ogl: replaced draw_count by s_n
This way error message is aligned with everything else :)

It is not perfect (normally it must be done in start of main draw)
2015-05-16 13:59:13 +02:00
Gregory Hainaut 62e0e6a067 gsdx: remove deprecated code
Core was fixed to call GSFifo in the good thread
2015-05-16 13:52:16 +02:00
Gregory Hainaut 2165c68938 oups forget a couple of break 2015-05-16 13:26:55 +02:00
Gregory Hainaut 02b478dfbc gsdx: plug the new PNG wrapper
Drop various duplicated code :)
2015-05-16 12:47:28 +02:00
Gregory Hainaut 8cd533304c gsdx: new dependency on linux => png++
Note: it is only header file that wrap the standard png (which was
already mandatory for wx/sdl)
2015-05-16 12:47:28 +02:00
Gregory Hainaut cab59587e8 gsdx: add a PNG wrapper
Normally it supports all formats but I didn't have luck with 16 bits depth gray
2015-05-16 12:32:05 +02:00
Gregory Hainaut 3f278382a1 gsdx-debug: dump all drawing register
Thanks PERL
2015-05-16 11:16:33 +02:00
Gregory Hainaut 8341055f3e gsdx-ogl: don't enable ogl_texture_storage on catalyst 2015-05-16 00:31:25 +02:00
Gregory Hainaut a2d605be0b gsdx: copy past mistake
Let's always increment the s_n counter
2015-05-16 00:31:25 +02:00
Gregory Hainaut cfddcb7a93 gsdx-ogl: typo 2015-05-16 00:31:25 +02:00
Gregory Hainaut 0f01ba4c46 gsdx-ogl: mega boost
Enable Nvidia multi thread driver optimization
Enable ogl_texture_storage by default (requires for the speed boost
, later the option will be removed)
2015-05-16 00:31:25 +02:00
Gregory Hainaut a1bfb237e6 Partially Revert "gsdx-ogl: drop support of GL_ARB_clear_texture extension"
This reverts commit 03e72781aa.

Let's add back the clean texture pointer

I want to test it on
1/ DSA
2/ MT driver
2015-05-16 00:31:25 +02:00
Gregory Hainaut 28bb64aae8 gsdx: sed/dr/dRect/ 2015-05-15 20:49:32 +02:00
Gregory Hainaut 445c28fe97 gsdx: sed/sr/sRect/ 2015-05-15 20:47:14 +02:00
Gregory Hainaut d566bb2a23 gsdx: sed /st/sTex/ 2015-05-15 20:45:31 +02:00
Gregory Hainaut 6a9e425308 gsdx: sed /dt/dTex/ 2015-05-15 20:44:15 +02:00
Gregory Hainaut d870188d21 gsdx: sed/o/off/ 2015-05-15 20:40:09 +02:00
Gregory Hainaut 27d485a940 drop a file that was wrongly commited 2015-05-15 20:34:09 +02:00
Gregory Hainaut 6166c95325 gsdx-ogl: protect PBO with fence
Safer and doesn't impact perf too much.
2015-05-15 18:32:47 +02:00
Gregory Hainaut a5e424512c gsdx-ogl: really avoid consecutive clean 2015-05-15 16:00:46 +02:00
Gregory Hainaut 84c3592fbe gsdx-debug: more debug message/group 2015-05-15 16:00:45 +02:00
Gregory Hainaut 08291aed0c gsdx-ogl: color state impact the clean command 2015-05-15 15:25:45 +02:00
Gregory Hainaut 613e215c73 gsdx-ogl: add some note for the persistent buffer + add a flush
Persistent is slower (at least on my gs dump) because data is put
in  host instead of the video memory

I don't understand why upload the data directly to the video memory
is faster
2015-05-15 15:25:45 +02:00
Gregory Hainaut 5628bfb20c gsdx-ogl: drop old code
I have group so it doesn't pollute anymore gl trace
2015-05-15 15:25:45 +02:00
Gregory Hainaut 6d8695127f gsdx-recorder: use recursive mutex 2015-05-14 11:56:07 +02:00
Gregory Hainaut bd96a73580 gsdx-debug: trace texture cache hit/miss/removal
Actually only a small part but I think it is enough to help debugging
tc issue.
Only enable it on debug because it is quite verbose
2015-05-13 09:01:04 +02:00
Gregory Hainaut 5e9a3a424e Merge pull request #479 from PCSX2/gsdx-texture-cache
gsdx: value was wrongly overwritten
2015-05-13 08:08:46 +02:00
Gregory Hainaut b7a9465963 gsdx-ogl: update the device to use the new texture flags
Hopefully it will increase a bit the speed
2015-05-12 18:18:20 +02:00
Gregory Hainaut 3e784d57e8 gsdx-ogl: add some flags to trace texture state
goal1: avoid 2 consecutives clean of the render target
goal2: only invalidate texture correctly
2015-05-12 18:03:06 +02:00
Gregory Hainaut 2e34d48e97 gsdx-ogl: add a virtual GetID method for texture
Much more readable
2015-05-12 17:41:41 +02:00
Gregory Hainaut e0012811ae gsdx-debug: more debug info in gl trace 2015-05-12 12:36:34 +02:00
Gregory Hainaut 4e222f18cd gsdx-ogl: it was a bad idea to use DSA on fb
Actually I'm not sure we can mix both dsa/standard approach
2015-05-11 18:04:16 +02:00
Gregory Hainaut f37f3cb3cf gsdx-ogl: improve texture uploading
Initially we copy pitch by line in the PBO and tell the dma to only
use the first valid byte.

Now, we only copy useful data to the PBO. It reduce the copy and PBO memory requirement.

It seems a bit faster on native resolution
2015-05-11 16:32:13 +02:00
Gregory Hainaut 4e2e9aa56c gsdx-ogl: always read the first attachment of the fbo 2015-05-11 16:28:34 +02:00
Gregory Hainaut cb6e8a7d6a gsdx-linux: Don't enable EGL by default
I was hoping that EGL become a standard much more faster. Currently it is an useless dep
so let's disable it by default.
2015-05-11 15:33:40 +02:00
Gregory Hainaut 643b1647c4 gsdx-gui-linux: add some tooltips for the hw options 2015-05-11 14:12:41 +02:00
Gregory Hainaut 921fa3bab8 gsdx-ogl/linux: drop fba option
It is useless as DX11
2015-05-11 13:57:26 +02:00
Gregory Hainaut f0de7d6386 gsdx-debug: add 2 extra frames in GS dump
Initially I was afraid of the size increase but it can be
higly compressed.

Sometimes image was computed inside a RT but never outputed to
the screen which remains black. It is annoying to see the glitches
2015-05-11 13:45:24 +02:00
Gregory Hainaut b3d8981a22 gsdx: link replayer to png to avoid link failure 2015-05-11 13:24:40 +02:00
Gregory Hainaut eff4ac3e4a gsdx-ogl: update UBO hint
On Nvidia, DYNAMIC is a bit faster.
2015-05-11 12:35:41 +02:00
Gregory Hainaut 59f7e4d2dc Revert "gsdx linux: drop aligned stack option"
This reverts commit 2dcffe7fa4.
2015-05-11 12:15:38 +02:00
Gregory Hainaut 2dcffe7fa4 gsdx linux: drop aligned stack option
I think the bug was related to a wrong declaration of exported function without stdcall
2015-05-11 11:35:34 +02:00
Gregory Hainaut 286fe4db8c cmake/gsdx: check png++ is installed to support png image
Otherwise fallback to bmp file
2015-05-11 11:32:13 +02:00
Gregory Hainaut 30e3956ea7 gsdx-ogl: avoid issue with apitrace
The tool doesn't support NaN value so be sure the buffer is correctly initialized
2015-05-11 11:19:18 +02:00
Gregory Hainaut 1523b9534f gsdx-debug: compact the code 2015-05-11 11:19:00 +02:00
Gregory Hainaut 51ed3e63e9 glsl: oups forget to remove a line 2015-05-10 10:39:23 +02:00
Gregory Hainaut 5565544ba6 gsdx-ogl: DATE with texture barrier
Much faster for small batch that write the alpha value. Code can
be enabled with accurate_date option.

Here a summary of all DATE possibilities:
1/ no overlap of primitive
    => texture barrier (pro no setup of stencil and single draw)

2/ alpha written
    => small batch => texture barrier (primitive by primitive). Done in N-primitive draw calls.
    (based on GL_ARB_texture_barrier)

    => bigger batch => compute the first good primitive, slow but only 2 draw calls.
    (based on GL_ARB_shader_image_load_store)

    => Otherwise there is the UserHacks_AlphaStencil but it is a hack!

3/ alpha written
    => full setup of stencil ( 2 draw calls)
2015-05-09 19:54:01 +02:00
Gregory Hainaut 390811f414 gsdx-debug: Dump in PNG on linux & dbg/dev build
Keep BMP for standard user of release build
2015-05-09 18:41:17 +02:00
Gregory Hainaut 3c7a3a3d83 gsdx-ogl: disable accurate option if driver doesn't support it 2015-05-09 18:41:17 +02:00
Gregory Hainaut 7fac25edb0 glsl: add shader implementation of impossible blend
Issue: I don't know if destination alpha value must be multiplied by 2.0f
2015-05-09 15:02:34 +02:00
Gregory Hainaut f029e4763f gsdx-ogl: add the alpha value in a constant buffer 2015-05-09 15:02:34 +02:00
Gregory Hainaut 472608b879 gsdx-ogl: add accurate blending implementation 2015-05-09 15:02:13 +02:00
Gregory Hainaut 1e8aea033c gsdx-ogl: add a wrapper to control the drawing of primitives
No barrier => draw all primitives
Barrier but without overlap => draw all primitives
Barrier with overlap => draw primitive by primitve

It will ease the implementation of accurate blending and why not date too
2015-05-09 15:01:39 +02:00
Gregory Hainaut 625d65d4b4 gsdx-ogl: encode the bogus id as shader parameter 2015-05-09 14:55:44 +02:00
Gregory Hainaut bc5de8df6b gsdx-ogl: disable FF blend when blend is done in shader 2015-05-08 20:28:50 +02:00
Gregory Hainaut 380e420cdd gsdx-ogl: add a blend parameter to shader 2015-05-08 20:28:50 +02:00
Gregory Hainaut 9023f5f0db glsl: drop useless ifndef
I often mix them with the real value...
.
2015-05-08 19:28:17 +02:00
Gregory Hainaut 8e1db43431 gsdx-debug: debug stuff 2015-05-08 19:28:17 +02:00
Gregory Hainaut 3c66da4d82 gsdx: remove old code 2015-05-08 19:28:16 +02:00
Gregory Hainaut 1addae1993 gsdx-ogl: don't use extra shader for sprite hack
Atst == 2 && sprite_hack is equivalent to Atst == 1

It frees a bit in the shader selector, and reduces shader combinations.
2015-05-08 19:28:16 +02:00
Gregory Hainaut b490085214 gsdx-ogl: add 2 options in the GUI to ease testing
accurate_date => use an emulated stencil to compute destination alpha
    test (could be slow)

accurate_blend => do nothing (future)
2015-05-08 19:28:16 +02:00
Gregory Hainaut 4c91bab00e gsdx: fix compilation error on release build 2015-05-08 19:28:00 +02:00
Gregory Hainaut 6d31124d3a gsdx-debug: only enabled advance gl debugging on linux
It will avoid some crash on windows for driver that doesn't support
the extension.

Make debug support mandatory for debug build on linux.
2015-05-08 09:54:34 +02:00
Gregory Hainaut e87d129b09 gsdx-ogl: more verbose debug 2015-05-08 01:01:01 +02:00
Gregory Hainaut d6448183d7 gsdx-ogl-debug: insert error message in GL stream
This way, you can see your message in the GL debugger
2015-05-08 00:16:31 +02:00
Gregory Hainaut 544a923e32 gsdx: Add an option to control auto skip of depth texture
Default is 1 if the user enable hack.

It fixes GTA sun effect and likely others bugs.

Please someone add a windows GUI option.
2015-05-07 23:54:22 +02:00
Gregory Hainaut 51a67029cf gsdx-ogl: add an option to print gl error messages 2015-05-07 23:54:22 +02:00
Gregory Hainaut 7518b2ef21 gsdx-gui-linux: add debug option in the gui
* Only for debug/dev build
* look awful (expand/fill) but otherwise it is nice for the debug ;)
2015-05-07 23:54:22 +02:00
Gregory Hainaut d20501739f Merge pull request #528 from ssakash/patch-1
sync with GSdx.ini variable.(fix earlier typo)
2015-05-07 22:15:41 +02:00
Gregory Hainaut fda746ff93 gsdx-gui-linux: support 3 states hack options
Based on a Combo Box on linux. As good as 3 states check buttons
2015-05-07 22:13:49 +02:00
Gregory Hainaut d69ffa9b8b gsdx-gui-linux: move remaining table filling into small functions 2015-05-07 22:13:49 +02:00
Gregory Hainaut b39b9c9f55 gsdx-gui-linux: use callback everywhere
Note: texture offset doesn't work nicely (you need to press enter
to validate the change)
2015-05-07 22:13:49 +02:00
Gregory Hainaut d428e0d19d gsdx-gui-linux: move table filling into separate function
It is much easier to read this way. I need to use callback for the remaining
object before I can move everything out of main function.
2015-05-07 22:13:49 +02:00
Gregory Hainaut 917a6c28e5 gsdx-gui-linux: factorize code
* Use wrapper and callback for Check Button/Spin Button/Combo Box
* Use TheApp.m_gs vector to create combo box

Remove nearly 100 lines of code ^^
2015-05-07 22:13:49 +02:00
Gregory Hainaut ba21879059 gsdx-ogl: 1x aniso <=> off 2015-05-07 22:13:49 +02:00
Gregory Hainaut e6560f348e gsdx: add vector option for linux & openGL 2015-05-07 22:13:49 +02:00
Gregory Hainaut 8f1d00292b gsdx-ogl: allow to control vsync on Windows
Issue #529

Completely untested
2015-05-07 18:41:10 +02:00
Gregory Hainaut 6095f40baf gsdx-ogl: add the number of free bit in selector structs 2015-05-07 18:41:10 +02:00
pgert 9a083d5506 gsdx: crc hacks: few new crcs, few crcs region changes
Signed-off-by: Avi Halachmi (:avih) <avihpit@yahoo.com>
2015-05-07 15:57:50 +03:00
Gregory Hainaut 97fad356b8 gsdx-ogl: fix debug build for AMD/Intel HW 2015-05-06 19:09:13 +02:00
Gregory Hainaut cc4713d379 gsdx-debug: extend ogl debug capabilities
Group opengl calls into a nice name.

Apitrace shows them in a tree format that support folding. Previously it
was a long flat list (10K-40K of lines by frame)

I align the call number with the internal s_n variable. This way it is
easy to map GSdx dump output with the GL debugger :)
2015-05-06 19:09:13 +02:00
Gregory Hainaut 530e4ce776 gsdx-ogl: drop hack that rescale primitive (to avoid upscale glitch)
Rendering is bad. It renders sprites at native resolution.
2015-05-06 19:09:13 +02:00
Gregory Hainaut 6d65867b26 gsdx-ogl: comment point_sampler
It is not enabled on the shader so I will reuse the bit
2015-05-06 19:09:12 +02:00
Gregory Hainaut 3fcac07120 gsdx-ogl: print some message when blending is not properly supported 2015-05-06 19:09:12 +02:00
Gregory Hainaut 6fca3b421d gsdx-debug: dump register context in a .txt file
+ Realign s_n number if frame is skipped

This way it is easier to understand current draw. It also eases
comparaison between SW/HW.
2015-05-06 19:09:12 +02:00
Akash 24e37d2dea sync with GSdx.ini variable.(fix earlier typo)
fixed the description for round offset hack.

fixed the new description for round offset hack.
2015-05-05 23:01:46 +05:30
Gregory Hainaut 5d4bc5c8fe Merge pull request #516 from PCSX2-underground/master
round offset UI initialization
2015-05-05 17:48:53 +02:00
Gregory Hainaut 5f5b901bca gsdx-ogl: alpha bending equation/function are constant
Drop useless variables/state checking
2015-05-05 11:20:25 +02:00
Gregory Hainaut 8032e2c369 gsdx-ogl: separate color mask state from the blending state
Unlike DX they're uncorrelated.
2015-05-05 10:26:01 +02:00
Akash 302ce51efe round offset UI explanation
initialization of IDC_ROUND_SPRITE

set&get config for round offset.

three state checkbox for the hack.

define IDC for round offset.

Linux (GUI) refresh.

typo
2015-05-05 00:29:00 +05:30
Gregory Hainaut 7bfee7e377 gsdx-debug: stop the dump after a limited number of draw call
Otherwise it fills your disk in a short time with useless data.
2015-05-03 16:46:48 +02:00
Gregory Hainaut c1ddad2d25 gsdx-linux: Refresh the GUI
* Use table everywhere (better alignment)
* Factorize Box/Frame creation
* Factorize table insertion
* Add Anisotropic Filtering support
2015-05-03 16:36:48 +02:00
Gregory Hainaut ae70344fbc gsdx-ogl: fix 2 passes DATE with GL42 (override_GL_ARB_shader_image_load_store = 1)
It fixes shadows issue with Persona 3
2015-05-02 16:56:18 +02:00
Gregory Hainaut 14a1925de0 gsdx ogl: date texture is signed to use i variant 2015-05-02 16:53:34 +02:00
Gregory Hainaut f37ef105c5 gsdx-ogl: add support for anisotropy
Close feature request #447
2015-05-02 10:54:58 +02:00
Gregory Hainaut b1ec8a5a42 gsdx-ogl: detect support of GL_EXT_texture_filter_anisotropic 2015-05-02 10:53:19 +02:00
Gregory Hainaut 73d04e33e9 gsdx ogl: clean various comment and old code 2015-05-01 20:04:23 +02:00
Gregory Hainaut 335695bd0e purge GLES from GSdx !
mobile will use vulkan (or any new API) anyway
2015-05-01 20:02:17 +02:00
Gregory Hainaut e17ba1c143 gsdx ogl: disable logz when ARB_clip_control is supported
Basically any recent drivers but Catalyst...
2015-05-01 15:01:08 +02:00
Gregory Hainaut 2ff3d17f67 gsdx-ogl: don't create override option for mandatory extension
Ini is alredy big enough
2015-05-01 14:18:05 +02:00
Gregory Hainaut a0c17ae0a4 gsdx: use vertex storage by default
It is faster on games that draw lots of primitives and in low upscaling.
2015-05-01 14:05:45 +02:00
Gregory Hainaut 004fa7aea4 gsdx debug: allow to dump alpha channel as a gray texture
I would love to find an image viewer that allow to mask channel of the image
2015-05-01 13:38:58 +02:00
Gregory Hainaut c8a3db114c gsdx debug: create savet option
0: don't dump input texture
1: dump input texture

Now, you can do a first pass with only RT. When you find the wrong call, you can redump the input texture of the bad draw.
2015-05-01 13:35:21 +02:00
Gregory Hainaut f96a653d05 gsdx-ogl: GSVertexArrayOGL uses ASSERT with condition
Remove useless indentation too
2015-05-01 12:16:26 +02:00
Gregory Hainaut 71c26a829e gsdx-ogl: forget to remove this useless call
It is done once in Device Creation instead of per stencil object
2015-05-01 12:10:03 +02:00
Gregory Hainaut c76e66f8d2 gsdx-ogl: fix read back of render target
Initial code use a PBO to do asynchronous transfer. It is silly because
GSdx doesn't use this free time. So let's use a sync read. Same speed but
no PBO to manage.
2015-05-01 01:26:44 +02:00
Gregory Hainaut de52ce956a gsdx linux: update gui
Clear texture was dropped but texture_barrier was added
2015-05-01 01:00:11 +02:00
Gregory Hainaut 7367b22e03 gsdx-ogl: reduce toggling of scissor state for DATE 2015-05-01 00:59:49 +02:00
Gregory Hainaut 71e517108d gsdx-ogl: fix colclip
Sotc shadow and likely various games :)

Thanks to pseudo
2015-04-30 23:08:05 +02:00
Gregory Hainaut 25997647f2 gsdx-ogl: add ENABLE_OGL_PNG_OPAQUE to dump texture without alpha
Alpha is nice but fully transparent texture suck

The best will be an image viewer that can toggle the alpha channel
2015-04-30 23:06:54 +02:00
Gregory Hainaut 39a5d4c839 gsdx: add PNG support for SW renderer
Easier to compare
2015-04-30 20:13:24 +02:00
Gregory Hainaut b65a62096f gsdx-ogl: drop support of ENABLE_OGL_DEBUG
Stencil can be read by GL debugger due to correct mask configuration
2015-04-30 20:02:51 +02:00
Gregory Hainaut 8a52fdab57 gsdx-ogl: allow to dump texture as png file
-- slower (but that a debug feature)
++ smaller (40x-50x)
++ native support of alpha

Require libpng++ and the define ENABLE_OGL_PNG

Note: depth is not supported yet.
2015-04-30 20:02:50 +02:00
Gregory Hainaut ee19a2789c gsdx: move invalidation from GSDevice to GSTexture
Much cleaner this way
2015-04-30 19:55:57 +02:00
Gregory Hainaut 2bd9043657 gsdx-ogl: improve debug of stencil
Note: ENABLE_OGL_STENCIL_DEBUG could be dropped now that I can read the stencil properly
2015-04-30 19:55:57 +02:00
Gregory Hainaut 7887d7b5a5 gsdx-ogl: use less verbose code 2015-04-30 19:55:41 +02:00
Gregory Hainaut f0181d98fd gsdx-ogl: save the texture state 2015-04-30 09:57:30 +02:00
Gregory Hainaut 0ab0c6cfba gsdx: verbose debug option
Print opengl error message on stderr

Rename Debug.txt into GSdx_opengl_debug.txt
2015-04-27 19:30:03 +02:00
Gregory Hainaut eaa0dae305 glsl: drop invariant qualifier
Fix issue #510 and potentially it allows the compiler to  better optimize the code
2015-04-27 18:52:55 +02:00
Gregory Hainaut 46ff4dc3d3 gsdx-ogl: hardware unit only support normalization of 4 bytes...
(At least on recent AMD GPU)
2015-04-27 18:51:59 +02:00
Gregory Hainaut 301fe869c7 glsl: improve the logz handling
This way only 0 and 1 will conflict
2015-04-26 17:51:33 +02:00
Gregory Hainaut 768ae342c3 gsdx: move buffer check after allocation 2015-04-26 17:51:06 +02:00
Gregory Hainaut 346ef1eec2 gsdx-ogl: ouch! Properly check the creation of vertex buffers 2015-04-26 11:01:55 +02:00
Gregory Hainaut 6a3250cad2 gsdx-ogl: fix logz management (FFXII)
The issue is that z+1 overflow if z is UINT max
log2(z) overflow if z is 0

So let's use an or 1 to avoid both overflow
2015-04-25 20:23:26 +02:00
Gregory Hainaut ee244071fa gsdx-ogl: use 64 bits counter + fix division factor
I also added a counter of the real size of the texture.

I have a bad overhead for pbo transfer
2015-04-25 14:18:21 +02:00
Gregory Hainaut 00e62919c5 gsdx-ogl: use countof macro instead to hardcode the size 2015-04-25 13:06:02 +02:00
Gregory Hainaut 47a0026b60 gsdx-ogl: print the bandwidth of uniform 2015-04-25 13:00:03 +02:00
Gregory Hainaut f2f59544d2 gsdx-ogl: early bind vertex array object
Creation of buffer will generate a bind in BufferStorage mode. It is just to be safe.
2015-04-25 12:50:12 +02:00
Gregory Hainaut 15ae9996bb glsl: format white space + comment 2015-04-25 12:50:12 +02:00
Gregory Hainaut 757726bb91 gsdx-ogl: allow to invalidate the texture
It just a hint to the driver to avoid any useless transfer

I don't expect any change but it is free so why not ;)
2015-04-25 12:50:12 +02:00
Gregory Hainaut 75817bb27b gsdx-ogl: add a quick and dirty DSA layer emulation
The global idea is to use
1/ bind in tight loop
2/ DSA otherwise (to avoid any binding in tight loop)
2015-04-25 12:50:11 +02:00
Gregory Hainaut eb257d9295 gsdx-ogl: add dsa function place holder 2015-04-25 12:50:11 +02:00
Gregory Hainaut baf84b98c4 gsdx-ogl: add override_GL_ARB_texture_barrier option
To ease regression test.
2015-04-25 09:59:25 +02:00
Gregory Hainaut b12eb45bb7 gsdx-ogl: try to avoid crash on fglrx windows 2015-04-25 09:50:19 +02:00
Gregory Hainaut f0182f9a66 windows requires APIENTRY (=> stdcall) 2015-04-25 01:32:09 +02:00
Gregory Hainaut 7b0775d887 gsdx-ogl: add some fences to protect the upload of vbo buffer
This way ogl_vertex_storage must be safer to activate

And it brings a nice performance boost (game with lots of primitives and
reasonable upscaling)

SotC testcase 4x: 61fps => 78fps
2015-04-24 23:15:19 +02:00
Gregory Hainaut 36514bd95f glsl: fog is a single byte
Give a chance to the driver to optimize if possible
2015-04-24 21:37:37 +02:00
Gregory Hainaut c207632e49 gsdx-ogl: improve date performance for GL45
If there is no overlap, it is allowed to directly read from the render target.

On SotC testcase with 6x scaling: 30fps -> 40fps

Note: it requires GL_ARB_texture_barrier extension so be sure to have a recent driver

Note2: it requires a lots of testing too

Open question: in case of complex date (written alpha)
Will it be faster to split the draw call into multiple call with no
primitive overlap
2015-04-24 21:12:33 +02:00
Gregory Hainaut 795ae50ecd gsdx-ogl: fix the recently broken advance date feature
Now it is really working with a 2 stages shaders but it is still slow.
2015-04-24 20:13:38 +02:00
Gregory Hainaut 672e3f9533 gsdx-ogl: use DSA for texture management
Yeah code is much nicer :)
2015-04-24 19:34:17 +02:00
Gregory Hainaut 6d31d1e0d0 gsdx-ogl: add a layer to emulate DSA for texture
Framebuffer function will be nice too
2015-04-24 19:32:00 +02:00
Gregory Hainaut f71eb171cf gsdx-ogl: add glTextureBarrier function pointer
Could be useful
2015-04-24 18:35:01 +02:00
Gregory Hainaut 6e386df535 gsdx-ogl: avoid to clean fully texture in DATE
Is is useless and it has a small impact on performance for big upscale
2015-04-24 18:32:08 +02:00
Gregory Hainaut 03e72781aa gsdx-ogl: drop support of GL_ARB_clear_texture extension
Extension is a bit slower.

We use it to clear the RT but we generally use it right away so
we don't avoid the FB attachment.
2015-04-24 18:15:58 +02:00
Gregory Hainaut 89d5e5637c glsl: use an explicit cast insead of notEqual function
If the compiler didn't optimize the code, it will be a bit faster
2015-04-24 18:01:25 +02:00
Gregory Hainaut 56836561f4 glsl: replace runtime condition by preprocessor condition
It might be an easier work for the compiler

I didn't replace all occurences to keep readability
2015-04-24 17:51:29 +02:00
Gregory Hainaut 4bb8d15228 gsdx: be more verbose on title and bandwidth debug 2015-04-24 17:13:56 +02:00
Gregory Hainaut 258b73409c gsdx-ogl: update flags for buffer storage
Fix issue with Mesa driver
2015-04-23 21:10:43 +02:00
Gregory Hainaut f6652e9a50 gsdx-ogl: disable slow and buggy code until I found a better solution
ogl_texture_storage 1 creates texture corruption.

Advance date is too slow, code need to be updated (properly) to uses 2 passes only not 3
Maybe one could be enough (sometimes)
2015-04-22 09:33:41 +02:00
Gregory Hainaut b32f808fd4 gsdx-ogl: increase the number of pbo
It would cost 16MB of extra storage on the GPU but it might
reduce conflict of texture upload.
2015-04-22 00:40:38 +02:00
Gregory Hainaut bd6ea17bdc gsdx-ogl: speed improvement for DATE
DATE is implemented in 2 ways.
1/ with stencil
2/ purely in FS (sw)

I kept method 1 to reduce the work on method 2. It sucks for performance.
So it would be either 1 or 2.

Note: DATE has a big impact on higher upscaling
Note2: you can disable the 2nd method with this configuration parameter

override_GL_ARB_shader_image_load_store = 0
2015-04-22 00:36:34 +02:00
Gregory Hainaut 15dcf07b3b revert previous commit
Not better, worst slower.

I'm afraid I will need proper fencing
2015-04-22 00:32:46 +02:00
Gregory Hainaut 8386b427ea gsdx ogl: restore GL_MAP_COHERENT_BIT for texture upload
I hope to fix the texture upload corruption
I hope that impact on perf will remain small
2015-04-21 23:34:26 +02:00
Gregory Hainaut 19eb1f00d1 gsdx ogl: flush vbo range instead of barrier
For testing purpose. I don't know which one is better.

It seems flushing have less fps fluctuation than barrier.
2015-04-21 21:44:50 +02:00
Gregory Hainaut ce98276322 gsdx-ogl: improve speed of vertex streaming
Note yet enabled because I'm afraid of data corruption but feel free to test it

The option:
ogl_vertex_storage = 1

Performance note (warm cache+gs replay on colin3)
60 fps -> 76 fps
2015-04-20 09:38:03 +02:00
Gregory Hainaut 62489f42f1 gsdx-ogl: add an optimization note for later
Only 1 byte of fog is useful
2015-04-20 07:18:09 +02:00
Gregory Hainaut 6d253c0b8f glsl: fix debugging of tex coordinate in apitrace 2015-04-20 07:18:08 +02:00
Gregory Hainaut 31f8c065db gsdx-ogl: implement a new hack UserHacks_UnscaleSprite for opengl
UserHacks_UnscaleSprite = 1 will unscale flat sprites
UserHacks_UnscaleSprite = 2 will unscale all  sprites (don't work well so far)

The idea of the hack is to redo the interpolation of texture coordinate
based on the non-upscaled pixel position.

It avoids various glitches but sprites aren't upscaled anymore (so no
more anti-aliasing, potentially a coefficient can be added).
2015-04-20 07:18:08 +02:00
Gregory Hainaut 6124eb844e gsdx-ogl: only compile useful VS
logz is a constant
wildhack is only compatbile with TME/FST

Compilation goes down from 64 to 20 vertex shaders.
2015-04-20 07:17:58 +02:00
Gregory Hainaut 16e6d0d305 glsl: move shader into a separate directory
Only keep glsl_source.h for clarity
2015-04-19 18:49:02 +02:00
Gregory Hainaut 55fdf26898 glsl: remove the older file tfx.glsl 2015-04-19 18:49:02 +02:00
Gregory Hainaut 15264c6c63 glsl: split the main shader
* separate VS/GS and FS
* separate subroutine part of the FS

It already complex enough without subroutine stuff. Besides I'm not sure
we will keep subroutine on the future.
2015-04-19 18:49:02 +02:00
Gregory Hainaut 6fc9afb175 Merge pull request #507 from PCSX2/stdcall-for-plugin
Stdcall for plugin
2015-04-19 18:48:32 +02:00
Gregory Hainaut e605ed1d09 gsdx-queue: add a comment for the future 2015-04-17 19:12:36 +02:00
Gregory Hainaut fa243afbab gsdx SW: enable new queue && C++11 on linux/MSVC 2012+ 2015-04-17 19:12:36 +02:00
Gregory Hainaut d91e989abb gsdx-queue: pass shared_ptr by reference
It avoids atomic +1/-1 of the reference counter

The counter is still incremented when the ptr is copyed into the queue
2015-04-17 19:12:36 +02:00
Gregory Hainaut 84b33d2ddb gsdx-queue: plug the new queue as a drop-off replacement of previous boost queue 2015-04-17 19:12:36 +02:00
Gregory Hainaut 90794c302a gsdx-queue: import spsc_queue of boost
I remove 80% of the file to only keep the ring buffer core

Same speed as boost but without the boost dependency
2015-04-17 19:12:36 +02:00
Gregory Hainaut c9194301a0 gsdx-queue: (linux) add a GUI option to select the queue 2015-04-17 19:12:33 +02:00
Gregory Hainaut 0aac47ca59 gsdx-queue: add a new option "spin_thread" to select the queue behavior at runtime
If someone has a more elegant solution, feel free to share it

spin_thread = 0
spin_thread = 1 // the faster but GS thread will never stop, very bad for laptop
2015-04-17 19:03:21 +02:00
Gregory Hainaut 9682061472 gsdx-queue:add a new job dispatcher queue based on boost and C++11
It is faster on linux, it requires less code, and it is "portable"

It requires boost (only hpp files) + MSVC 2013 (for atomic) (seem doable by 2012 too)

Actually there are several queues that either use spinlock or full sleep
2015-04-17 19:03:21 +02:00
Gregory Hainaut a75d78bd7e gsdx: use standard lock_guard instead of GSAutoLock 2015-04-17 19:03:21 +02:00
Gregory Hainaut 9ad5933120 gsdx: Use composition insead of inheritance to support lock
To ease update to C++11
2015-04-17 19:03:21 +02:00
Gregory Hainaut 8deee6afbc gsdx: include some C++11 define for later 2015-04-17 19:03:21 +02:00
Gregory Hainaut c456764342 spu2x: declare exported function as stdcall
* Fix a stack buffer overflow on address sanitizer
* Might explain an old clang crash
2015-04-17 18:24:23 +02:00
Gregory Hainaut 545c1d387c gsdx: add an include for MSVC 2015-04-16 22:28:09 +02:00
Gregory Hainaut aff999cf69 gsdx linux: refresh the gui
* Use tooltip for hack
* Update string of previous hack
* Remove unused hack

Note: hack_sprite_check requires 3 states (and potentially others hack too) but
I don't know how to do it. It likely requires a "scale button"
2015-04-16 19:28:55 +02:00
Gregory Hainaut 85cbe285f0 gsdx dialog: move hack info into a separate file
This way it can be reused on linux.
2015-04-16 19:26:33 +02:00
Gregory Hainaut 670bcc1818 gsdx hack: use a dumb implementation for UserHacks_round_sprite_offset = 2
It works as bad as a "clever" implementation.

It seems to be enough for games such as venus/taisho-monoke/FFX

Note: it might creates glitches. Code will never be nice, so it is just
a trade-off
2015-04-16 19:26:33 +02:00
Gregory Hainaut 41e5be0673 gsdx hack: limit range of UserHacks_align_sprite_X
Just an extra check to avoid an overlap (avoid white line in tekken)
2015-04-16 19:26:33 +02:00