Gregory Hainaut
24be4b4969
gsdx-ogl: remove unsafe fbmask of the free SW blending
...
Initially it was free to do the SW blending because safe fbmask
will already do a sw blending.
Unsafe version uses a fast path with a limited blending. Therefore
SW blending isn't free anymore.
Improve the speed of the previous speed hack (xenosaga 1)
2016-01-03 15:39:45 +01:00
Gregory Hainaut
0d25a0592a
gsdx-ogl: fast blending accurate hack
...
The hack relies on the undefined behavior of the hardware so it can
potentially generate rendering corruption.
This new hack drops the cache flusing when only the alpha channel is masked.
Alpha is a direct copy of the fragment. Normally masked bits will be constant
everywhere (RT, FS output, texture cache) so it would likely work.
Just in case, code is only enabled with the new shiny hack
2016-01-03 15:39:45 +01:00
Gregory Hainaut
c0d0e2e89d
gsdx-ogl: PrimitiveOverlap requires real rectangle
...
runion/rempty/rinter requires x < z and y < w
Help issue #762 (accurate blending issue)
If you want to shine, please put better GSVector code (AVX512 is 2 instruction :p)
2015-10-22 12:34:50 +02:00
Gregory Hainaut
6561fbc831
gsdx-ogl: only enable aniso when sampling from the HW texture unit
...
Potentially help issue #884
2015-10-22 12:21:43 +02:00
Gregory Hainaut
0958b9db8e
gsdx-ogl: use the standard openGL name
...
Function pointer was mangled to avoid any collision. Nowadays all symbols
are hidden so no risk of collision.
Syntax is nicer beside it would allow to put back GLES3.2. I think it
supports most of the used extension.
glActiveTexture & glBlendColor are provided without symbol query.
2015-10-17 17:05:15 +02:00
Gregory Hainaut
03bc304ecf
gsdx-ogl: fix colclip regression when accurate blending is enabled
...
Fix #865
2015-10-16 22:07:50 +02:00
Gregory Hainaut
5fb8c7e65c
gsdx: initialize members in constructor of objects
...
A couple of useless members were removed too.
Also fix wnd initialization
Coverity:
CID 146955 (#1 of 1): Uninitialized pointer read (UNINIT)
18. uninit_use: Using uninitialized value wnd[i].
2015-09-23 09:46:53 +02:00
Gregory Hainaut
9b69afe541
gsdx-ogl: typo that broke TC offset hack
2015-09-20 22:19:45 +02:00
Gregory Hainaut
78569ee833
gsdx-ogl: redo properly the setup of texture format
...
* add lengthly comment to explain the format
* Likely reduce the number of shader permutation
* Avoid slow AEM (on GPU)
Expect regressions because TC needs some fixes
v2: fix palette mode
2015-09-11 14:14:22 +02:00
Gregory Hainaut
ddc03cbccf
gsdx: add a nice enum to replace the hardcoded convert shader
2015-09-08 16:51:24 +02:00
Gregory Hainaut
a46c11b088
gsdx-ogl: delete various leftovers
2015-08-22 13:33:32 +02:00
Gregory Hainaut
7002ff3ec3
gsdx-ogl: move texture scale from vs_cb to fs_cb
...
It avoid useless update of the vs_cb.
2015-08-22 13:33:04 +02:00
Gregory Hainaut
499206f0ea
gsdx-ogl: disable advance rendering when drivers don't support it
2015-08-22 12:22:35 +02:00
Gregory Hainaut
37f9bcf9cb
gsdx-ogl: reduce state change
...
* don't dirty aref when a fog color is uploaded
* only set clamp mode in clamp mode (region clamp is handled in shader)
v2: fix SSE2/3 compilation
2015-08-20 23:01:43 +02:00
Gregory Hainaut
c5a786ed2c
gsdx-ogl: remove support WMS/T == 2 in hardware unit
...
I think behavior was wrong because only first texel coordinate was clamped.
Beside we can't interpolate if AEM isn't yet applied
2015-08-20 23:01:43 +02:00
Gregory Hainaut
6b84a89b6a
gsdx-ogl: remove old ati hack for point sampler
...
Was never used on openGL
In the future absolute coordinate will be use anyway
2015-08-18 19:09:45 +02:00
Gregory Hainaut
37661f3a86
gsdx-ogl: fix blending regression (VP2)
...
Negative factor must be disabled in negative accumulation "-Cs*As + Cd"
Shader must output Cs*As and blending unit will do the Cd - C subtraction
2015-08-18 09:14:11 +02:00
Gregory Hainaut
260c12756a
gsdx-ogl: accelerate Cd - Cs * Alpha in sw blending
...
It is similar as Cd + Cs * Alpha except the operator
It would help to emulate other color clipping case correctly in basic
mode at full speed
2015-08-16 18:12:34 +02:00
Jonathan Li
6580f4922f
gsdx-ogl: correct fbmask conversion on texture shuffle
...
Fbmask is RGBA8 and must be converted to RGB5A1
=> bit 31 must be moved to bit 15
Signed-off-by: Gregory Hainaut <gregory.hainaut@gmail.com>
2015-08-16 14:06:10 +02:00
Gregory Hainaut
c32f1dfc23
gsdx-ogl: fix blend clear regression
...
Field selector are very dangerous to use.
Fix #764
2015-08-15 20:06:34 +02:00
Gregory Hainaut
0e3491bd58
gsdx-ogl: always do RW RT check
...
Jak uses it with triangle rendering.
2015-08-15 20:06:34 +02:00
Gregory Hainaut
c7b2f9d1d2
gsdx-ogl: setup fbo to always write to first buffer
...
GL_NONE was kind of useless because nothing was attached anyway
2015-08-15 20:06:34 +02:00
Gregory Hainaut
87f497af0a
gsdx-ogl: remove an useless variable
2015-08-15 20:06:34 +02:00
Gregory Hainaut
6046d6c417
Merge pull request #749 from PCSX2/gsdx-micro-optimization
...
Gsdx micro optimization
2015-08-12 08:54:36 +02:00
Gregory Hainaut
98c74879bf
Merge pull request #718 from PCSX2/depth-color-direct-write
...
Depth color direct write
2015-08-10 15:50:48 +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
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
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
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
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
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
3784ea768f
gsdx: check null pointer when doing a texture clear
2015-08-04 19:26:17 +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
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
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