Commit Graph

2704 Commits

Author SHA1 Message Date
Gregory Hainaut d855bc5ca8 gsdx sw: improve exit condition of SW extra thread
Use a relaxed atomic to read the exit variable in the hot path

Wait that exit is deasserted in the destructor, so we are sure the
thread will "soon" return
2016-07-14 18:29:22 +02:00
Gregory Hainaut abc9f7d096 gsdx tc: log unsupported LookupDepthSource 2016-07-14 18:29:22 +02:00
Gregory Hainaut e642bbc426 gsdx sw: add extrathreads_height to control the quantity of pixels processed by a thread
Value could range from 1 to 9. Default is 4 and it is potentially the
best option.  Feel free to test some values on your system, behavior
might depends on the core number and thread number

Value is exponential so 4 is 2 times more pixels than 3.

Small value increased thread overhead, big value increase wait/sync latency
2016-07-10 17:48:10 +02:00
Gregory Hainaut 91eccb7bab gsdx sw: increase the size of the ring buffer 256 => 65536
memory overhead by thead is only 256KB

However it will reduce the probability to block the push thread to nearly 0

I tested a couple of dumps and only manage 4000 element with 1 extrathread.
2016-07-10 10:49:06 +02:00
Gregory Hainaut 85fb55a0e1 gsdx ogl: memory management take 3
Add a factor 2 on the VRAM to get the quantity of available memory for the textures.
The driver is allowed to put some textures in RAM. Of course it is bad for performance
but it won't crash.

Due to the 4GB by process limit, I keep a (reasonable) maximum of 3.8GB.

In order to avoid a crash when memory is too low an exception will be risen
with no guarantee on rendering and big performance impact. In this situation
you ought to reduce upscaling/disable large framebuffer.
2016-07-10 10:23:23 +02:00
Gregory Hainaut a37cd40ce3 gsdx ogl: only print an error when VRAM is low
Until a better solution is found or people buy better GPU :)
2016-07-09 11:43:28 +02:00
Gregory Hainaut a2086ed458 gsdx profiler: drop latest frame time
Value is out of the chart. I'm not even sure it is a real frame so let's just remove it.
2016-07-09 10:03:21 +02:00
Gregory Hainaut 82d83ca579 gsdx: dull driver
Hopefully futur low-end GPU will get 4GB of VRAM
2016-07-08 21:53:42 +02:00
Gregory Hainaut 3f03f7333c gsdx: improve builtin profiler
* Does the first vsync (start counter) after the sleep
* Dump data after the rendering, avoid to count extra destructor,sleep time
* Dump data into a basic csv file (if people want nice graph)
2016-07-08 21:47:53 +02:00
Gregory Hainaut eefe3e8d4f gsdx ogl: reserve 200MB of the VRAM for various gl buffers (IBO/VBO/PBO/UBO) 2016-07-08 09:43:47 +02:00
Gregory Hainaut df4645a84a gsdx ogl: Don't use NV extension on AMD
potentially the NV extension is wrongly used but can't test it with the free driver
2016-07-07 23:48:56 +02:00
Gregory Hainaut d6e447a89c gsdx: fix for old gl header release (build bot) 2016-07-07 22:23:20 +02:00
Gregory Hainaut d8050634f6 gsdx ogl: plug GL_NVX_gpu_memory_info and GL_ATI_meminfo
to query available memory on the GPU

Requirement
* dedicated GPU (ofc!)
* proprietary driver. Free driver supports r600, radeonsi
2016-07-07 22:05:15 +02:00
Gregory Hainaut 7e2b3da928 gsdx ogl: monitor global GPU memory texture usage
So far there is a hardcoded limit at ~3.7GB

In the future, the limit will be reduced for low-end GPU.
2016-07-07 22:05:15 +02:00
Gregory Hainaut f450056626 gsdx: fix initialization list order
In file included from GSRenderer.cpp:23:0:
GSRenderer.h: In constructor ‘GSRenderer::GSRenderer()’:
GSRenderer.h:58:12: warning: ‘GSRenderer::m_dev’ will be initialized after [-Wreorder]
  GSDevice* m_dev;
            ^
GSRenderer.h:52:13: warning:   ‘GSVector2i GSRenderer::m_real_size’ [-Wreorder]
  GSVector2i m_real_size;
             ^
GSRenderer.cpp:32:1: warning:   when initialized here [-Wreorder]
2016-07-07 22:05:15 +02:00
Gregory Hainaut 29c97a9bf2 gsdx ogl: only enable accumulation hack in HDR algo
Goal is to reduce shader permutations and improve perf when sw blending is disabled
2016-07-07 19:56:23 +02:00
Gregory Hainaut 16c2baa0df gsdx-ogl: don't hardcode the accumulation blend trick
Perf impact is bigger than expected
2016-07-07 19:56:23 +02:00
ramapcsx2 6b6821d0c6 Merge pull request #1433 from FlatOutPS2/master
Merge Circuit: Enhance offset detection of output circuit
2016-07-06 12:15:08 +02:00
Akash 309a8283b2 GSDX-TextureCache: Don't allow RT size below default value
Fixes upscaling issues on Burnout dominator where setting custom resolution of 640x448 looks way worse than the native resolution.
2016-07-05 19:15:23 +05:30
Akash 6085da91e2 GSDX-Dialog: Clamp custom res and sw threads values to input range (#1443)
Fixes crash on custom resolution when users select a value below 256 or above 8192
2016-07-03 22:04:16 +01:00
Gregory Hainaut a1a5f470f7 gsdx-ogl: fix builtin profiler frame counting 2016-07-03 15:54:58 +02:00
Gregory Hainaut cc62e8c785 Merge pull request #1439 from ssakash/Cleanup_Warnings
PCSX2: Clean up warnings on MSVC
2016-07-03 15:45:39 +02:00
Gregory Hainaut 11eeeb6ab1 gsdx ogl: be sure sw blending is enabled in sw colclip
Hit the assertion on superman
2016-07-02 17:19:41 +02:00
Akash 4cfb2b248e GSDX: Clean up warnings on MSVC
GLLoader: cast passed parameters to required type.
GSDeviceOGL: cast variables to required type and silence warnings.
GSRendererOGL: cast variables to required type and silence warnings.
2016-06-30 16:50:10 +05:30
Gregory Hainaut a065a1d918 gsdx ogl: don't use GL_ARB_clear_texture for the depth buffer
It creates some slowdowns for unknown reason. My best hypothesis is
that stencil will be cleared too which is slow.

Let's keep the code for the future when stencil will be dropped.

Fix #1420
2016-06-30 09:40:07 +02:00
FlatOutPS2 1e3e343e43 Merge Circuit: Enhance offset detection of output circuit
If baseline and display rectangle offsets differ by small values then consider the status of frame memory offsets, prevents blurring on Tenchu: Fatal Shadows, Worms 3D, ProStroke Golf, Vexx
2016-06-29 22:35:53 +02:00
Akash a5671f016a GSDX-TextureCache: Add proper scaling for custom resolution
* Improve frame buffer height management on custom resolution. Width seems to be fine with the same size as scaled image output.
* Prevent offset issues on Persona 3 based on the data from merge circuit.

Note: Fixes custom resolution upscaling on ICO 50Hz/60Hz mode when large frame buffer is enabled. previously 60Hz mode only displayed half of the screen and 50Hz mode only worked due to the scissor hack.
2016-06-30 00:35:10 +05:30
Gregory Hainaut 1f4f55bcc9 gsdx: tentative fix for 64 bits buildl 2016-06-26 18:27:50 +02:00
Gregory Hainaut 4ec941440d gsdx replay: use the new profiler data 2016-06-26 17:53:22 +02:00
Gregory Hainaut d7c1faf563 gsdx ogl: add GPU timers to measure time between 2 vsync
So far only basic stuff (min/mean/max frame rendering time)
2016-06-26 15:34:36 +02:00
Akash ce20544a4f GSDX-TextureCache: Remove hacks which caused scaling issues
* Ignore Frame memory offsets for calculating dimensions value of display rectangle.
* Remove hack which limited scaling size based on the scissor value.

Note: With the following commit, SilentHill 2 now properly outputs the desired resolution by the users on custom resolution. Previously if we set 1024 x 1024 , it'll output a lower height value which was caused by the hack removed on this commit.
2016-06-26 12:14:38 +05:30
Gregory Hainaut 79587215bb gsdx ogl: add the option force_texture_clear for test purpose
Might be completely useless.

1 => always clear framebuffers and textures to black (aka 0)
2 => always clear framebuffers and textures to red
2016-06-24 18:41:55 +02:00
ramapcsx2 dce67351f9 Merge pull request #1416 from ssakash/Real_IR
GSDX: Add proper detection of internal resolution
2016-06-21 18:05:46 +02:00
Gregory Hainaut 36e82abd12 Merge pull request #1411 from ssakash/PCRTC
Merge Circuit: Improve offset detection of output circuit
2016-06-19 13:45:51 +02:00
Gregory Hainaut 41c522104e Merge pull request #1414 from PCSX2/gsdx-single-pbo
gsdx ogl: replace eight 8MB PBO with a single fat 64MB PBO
2016-06-19 13:40:38 +02:00
Akash e05e7bee82 GSDX: Add proper detection of internal resolution 2016-06-19 17:10:03 +05:30
Gregory Hainaut 113c78b67e gsdx ogl: replace eight 8MB PBO with a single fat 64MB PBO
It ought to be the same in performance but code will be easier this way

v2: print the sync status
v3: use a performance print so it doesn't spam the console
2016-06-18 14:59:19 +02:00
Akash ab1ab7b6f1 GSDX: Remove redundant "Null" string from GS Frame title bar (#1409)
* GSDX: Remove redundant "Null" string

* GSDX: Convert "GetConfigI" into "GetConfigB"
2016-06-17 14:25:09 +01:00
Akash 4a0656e903 Merge Circuit: Improve offset detection of output circuit
* Fixes blurring / wrong resolution output on FFXII
2016-06-16 13:22:53 +05:30
Jonathan Li 52a88a7bdf Merge pull request #1384 from ssakash/gsdx-default-renderer
gsdx:windows: Automatically determine best renderer
gsdx:windows: Only enable "Disable Depth Emulation" checkbox on OpenGL
2016-06-13 22:04:46 +01:00
Gregory Hainaut 08579021c5 gsdx ogl: 1 isn't used for WMT/WMS in shader
Stick it to 0 to avoid useless shader toggling
2016-06-11 13:35:32 +02:00
Gregory Hainaut 3234c8241b gsdx ogl: massively extend glsl self test
* Support Mesa Nouveau IR (free driver for Nvidia's GPU)
  => Print intermediate representation + final shader
  => Dump GPR usage
* Move dumped shader in /tmp/GSdx_Shader/<sub_dir>
  =>  Avoid the landing of 3 thousands of files in $PWD ^^
* Use function instead of macro
2016-06-11 13:34:37 +02:00
Gregory Hainaut 1c8de02c8d gsdx ogl: trace shader permutation
Too much permutation is bad for driver performances
2016-06-11 13:34:23 +02:00
Gregory Hainaut 5ffc911a69 gsdx: avoid crash in DX debug build 2016-06-11 01:13:20 +02:00
Gregory Hainaut 8c4d8cfdca glsl: avoid an unset warning 2016-06-09 18:27:58 +02:00
Gregory Hainaut df45c99f96 gsdx ogl: prefix member in GSUniform object with m_ 2016-06-09 18:27:58 +02:00
Gregory Hainaut fca2661e05 gsdx ogl: add a pretty name to various opengl opengl 2016-06-09 18:27:58 +02:00
Gregory Hainaut ff3d9bd373 gsdx ogl: add function pointer to name object
It could be nice to ease debug
2016-06-09 18:27:58 +02:00
Gregory Hainaut 415ce93425 gsdx ogl: rename the confusing function EmulateGS to Lines2Sprites 2016-06-09 18:27:58 +02:00
Gregory Hainaut 61075febae gsdx ogl: move selector as state variables
Will be easier to move code around if required in the future
2016-06-09 18:27:58 +02:00
Gregory Hainaut 1132230674 gsdx ogl: create m_require_one_barrier/m_require_full_barrier state variable
hopefully code will be more readable
2016-06-09 18:27:58 +02:00
Gregory Hainaut 7ece9b823d gsdx ogl: move texture management into a separate function 2016-06-09 18:27:57 +02:00
Akash 399ad3f450 GSDX: Gray out "Disable Depth Emulation" for renderers other than OpenGL 2016-06-09 15:27:18 +05:30
Akash fdc10e13ec GSDX: Better detection of default renderer
* Better detection of default renderer based on the vendor ID ( Nvidia, AMD , Intel)
* GSUtil: Add a dedicated function for identifying best renderer
2016-06-09 15:27:11 +05:30
refractionpcsx2 c530858df3 GSdx: Move "isNative" check to DX11 context creation. Resolves speed regression in games that constantly change the viewport size. 2016-06-06 20:45:30 +01:00
Jonathan Li 7c205d7a1e windows: Don't use __declspec(dllexport) for plugin exports
Using __declspec(dllexport) causes duplicate export warnings to be
generated when compiling 64-bit builds. Name mangling also occurs on
functions that are exported this way, so it doesn't actually work with
the plugin system, which uses unmangled names.

The module definition file exports the functions without name mangling
and is sufficient on its own.
2016-06-05 22:57:42 +01:00
Gregory Hainaut 2b00447a43 glsl: optimize the number of active constant buffer
Increase the performance on the free driver (Nouveau)

Currently the driver validates all UBO when only 1 is updated. It
is clearly a bad idea to put all UBO in a single common headers.
2016-06-05 16:45:11 +02:00
Jonathan Li c7940856ce windows: Remove unneeded library dependencies
Some are unnecessary since they're already taken care of by project
references, while others are duplicates or unused.
2016-06-04 22:55:48 +01:00
Gregory Hainaut 4768f912b8 gsdx linux: add vsync support for free driver 2016-06-04 13:17:59 +02:00
Gregory Hainaut 2b2412ca20 gsdx hw: disable OI_GsMemClear when framebuffer writes are masked. 2016-06-01 22:34:14 +02:00
Gregory Hainaut 7202cac7d0 gsdx ogl: remove the dual source blending workaround 2016-06-01 21:00:29 +02:00
Gregory Hainaut 08a8bfa76c gsdx ogl: plug new program compilation for bad driver 2016-06-01 21:00:29 +02:00
Gregory Hainaut 17988fc7de gsdx ogl: add code to compile a single shader 2016-06-01 21:00:29 +02:00
Gregory Hainaut 405f312fe8 gsdx ogl: format GSShader code
Move the Geometry Shader to the call of the function
2016-06-01 21:00:29 +02:00
Gregory Hainaut 538bb418ce gsdx ogl: revert the removal of single shader compilation function pointer
(It doesn't mean I will drop SSO but that I will do some tests one day)
2016-06-01 09:29:56 +02:00
Gregory Hainaut 5d49a6b685 gsdx ogl: replace 4 VS shader variation by an AND mask
Perf will be roughly the same. However there is a single VS for all
the HW emulation.
2016-06-01 09:29:56 +02:00
Gregory Hainaut 959abe64f8 gsdx ogl: implement wildhack on the CPU
Speed impact is likely small and the plan is only to keep a single Vertex Shader
2016-06-01 09:29:56 +02:00
Gregory Hainaut 3d192b7f8d gsdx ogl: separate channel code into a separate function 2016-06-01 09:29:56 +02:00
Gregory Hainaut 6d2196125d gsdx: fix TVshader case option 2016-05-31 19:35:35 +02:00
Gregory Hainaut 564bf8a089 gsdx ogl: terminator 3 supports sampling from the depth 2016-05-30 19:39:52 +02:00
Gregory Hainaut 43a1c48f75 gsdx option: add missing default and fix case 2016-05-30 18:23:22 +02:00
Gregory Hainaut 9c8b5e37a4 gsdx ogl: blacklist AMD 2015 drivers 2016-05-29 18:21:12 +02:00
Gregory Hainaut 12512f767b gsdx linux gui: disable the hack panel when user hacks are disabled
Move the user hack option to the main panel (Box with a single option doesn't look nice)

Hopefully it will be less confusing for linux users.
2016-05-29 18:09:22 +02:00
Gregory Hainaut 38a511e3e1 gsdx linux: some capture options are cross platform 2016-05-29 17:38:40 +02:00
Jonathan Li 8b74c108a4 Revert "gsdx:windows: Fix Windows 7 compile"
This reverts commit 7736c90457.

It wasn't actually a Windows 7 compile fix, but a bad build environment
workaround.
2016-05-29 14:33:58 +01:00
Jonathan Li b20433c0be windows: Remove user.props references from all projects
find . -name *.vcxproj -exec sed -i -e '/user.props/d' {} \;

Microsoft recommends against using .user files. From
https://msdn.microsoft.com/en-us/library/669zx6zc.aspx :
"The best practice is to delete the reference to them in Property
Manager to ensure that your projects operate independently of any
per-user, per-computer settings. This is important to ensure correct
behaviour in a SCC (source code control) environment."

If you cannot compile SPU2-X after this commit (since that still relies
on the old DirectX SDK), you'll need to fix your build environment.
2016-05-29 12:21:52 +01:00
Gregory Hainaut fb26254fbb gsdx ogl: implement a more generic HLE shader for terminator 3
Hopefully without regression for others games
2016-05-29 10:13:43 +02:00
Gregory Hainaut f7ddd488e1 gsdx ogl: Extend uniform buffer with channel parameter
Instead to use the standard ps ubo which is used every draw call.
I reused a barely used buffer to reduce the extra cost of the upload
2016-05-29 10:13:43 +02:00
Gregory Hainaut 6f19d928f6 gsdx ogl: use the new uniform cache upload method 2016-05-29 10:13:43 +02:00
Gregory Hainaut fa15d7fd26 gsdx ogl: generic code to cache uniform buffer
It will allow to skip a buffer transfer if the new content is the same
2016-05-29 10:13:43 +02:00
Jonathan Li 36cd1ae3cc windows: Remove parameter from prebuild command
It's unused. Also convert to using SolutionDir instead of Svnwhatever.
2016-05-28 23:25:08 +01:00
Gregory Hainaut 58f04975e1 oups fix link 2016-05-28 18:49:49 +02:00
Gregory Hainaut 179681ef18 gsdx ogl: enable AMD driver blending workaround only on latest legacy driver
Legacy GPU:
Older driver will be broken.

Still supported GPU:
Please upgrade to the latest AMD driver 16.5.2 or 16.5.3 (and prey that future driver will still work)
2016-05-28 18:43:55 +02:00
Gregory Hainaut a648e2db70 gsdx: switch to dx10/11 as default on Windows
1/ Detecting Dx level requires a DX context.
2/ Dx9 GPU market is 1-2% (I'm not even sure they can run latest windows 10)
2016-05-28 10:07:27 +02:00
Gregory Hainaut c61e09e36a fix left over default 2016-05-28 10:07:27 +02:00
Gregory Hainaut 453ac88dce gsdx option: use CaptureWidth/CaptureHeight on linux too 2016-05-28 10:07:27 +02:00
Gregory Hainaut a9c18c57e4 gsdx option: use the new GetConfig* function
v2:
add PSX stuff
ssakash review
2016-05-28 10:07:27 +02:00
Gregory Hainaut 03a6f2093e gsdx option: add multiple GetConfig to avoid overload issue 2016-05-28 10:07:27 +02:00
Gregory Hainaut 05818d70f4 gsdx option: centralize default configuration to a single file
Potential issue
* miss a default value
* Renderer is DX9 again on windows
* Case issue
* Same default for all code paths
* overload of GetConfig

v2: separate specific OS option
2016-05-28 10:07:26 +02:00
Akash 2409817556 GSDX: Move PSX code to an isolated path 2016-05-26 19:04:17 +05:30
Jonathan Li 06dba2d258 Merge pull request #1372 from PCSX2-Alpha/Windows_GUI
GSDX-Windows: Add "Large Framebuffer" option
2016-05-26 08:57:33 +01:00
Akash 9ae6c2673a GSDX-Windows: Add "Large Framebuffer" option 2016-05-26 11:38:24 +05:30
Jonathan Li 352b61c741 gsdx: Allow normal assert to be used 2016-05-26 00:11:52 +01:00
Jonathan Li db81925c4b Merge pull request #1335 from turtleli/freebsd
Support FreeBSD
2016-05-25 18:55:51 +01:00
Gregory Hainaut 60e0f3b9b5 Merge pull request #1234 from PCSX2-Alpha/Time_Crisis
GSDX: Improve CRTC width detection
2016-05-25 17:51:07 +02:00
Gregory Hainaut b6da1bcb15 gsdx linux: add the new option checkbox 2016-05-23 19:38:44 +02:00
Gregory Hainaut 0c3324b6ef gsdx hw: create a large_framebuffer option
Enable it to ensure correct rendering (FMV)
Disable it to reduce GPU/memory requirement

Option will likely be removed when the perf impact will be reduced.
2016-05-23 19:38:44 +02:00
Gregory Hainaut 1f4439a89e gsdx: add some notes of potential optimization 2016-05-23 19:38:44 +02:00
Jonathan Li 571432a7aa gsdx:freebsd: Fix compilation 2016-05-21 13:34:18 +01:00
Jonathan Li 57cdf0bf16 gsdx:linux: Use clock_gettime instead of ftime
ftime is obsolete and not present in recent POSIX specifications.
2016-05-21 13:33:40 +01:00
Jonathan Li da2046e90e gsdx: Use alignas instead of __aligned
__aligned is defined in FreeBSD headers and will cause compile errors.
2016-05-21 13:23:11 +01:00
Gregory Hainaut a7ba779ba8 gsdx ogl: another HLE channel effect for terminator 3
Same as before but with a different fbmask value (I don't know why but
I have the feeling that I might need the others value too)
2016-05-20 19:55:39 +02:00
Gregory Hainaut 1c21ea955c gsdx ogl: HLE channel effect for terminator 3
Unfortunately I think the game uses another similar effects
2016-05-20 19:45:20 +02:00
Gregory Hainaut 247d33a627 gsdx ogl: always clear depth buffer in FFX2
It avoid depth issues and I'm sure it won't broke other games this way.

Issue #1340
2016-05-19 17:53:46 +02:00
Akash 2166980f91 GSDX: Calculate dimensions of rectangle after merge
* Properly display rectangle size after passing through merge circuit on
GS Dumps and GS Frame titlebar.
2016-05-19 15:53:49 +05:30
Akash 58b43dbb6c GSDX: Rework video mode detection code
* Use some nice enums instead of macros
* properly detect 720P/1080I separately.
* Some code cleanup, extended variable names and added few comments
2016-05-19 14:02:50 +05:30
Gregory Hainaut e258f3e2fa gsdx ogl: update accurate DATE behavior
* Fast accurate DATE is always enabled, it was faster than standard DATE

* The less fast version is always enabled too. It is likely barely used
  so perf impact will be small on few game that could hit this path.
  Nice rendering has a higher priority

* The "slow" path will depends on the date option.
Note normally it isn't too slow (-10%) if GL_ARB_shader_image_load_store
is supported but AMD crimson is an epic fail.
2016-05-19 10:03:46 +02:00
Jonathan Li 7b27be1306 gsdx: Consider horizontal offsets when merging output
Fixes games like Time Crisis 2/3, which use two half-width display
rectangles placed side by side in split screen mode by using different
DISPLAY.DX values.
2016-05-19 10:06:12 +05:30
Gregory Hainaut 14fa797235 gsdx hw: always uses a big RT on snowblind engine game
Avoid headack to avoid conflict between 1280x1024 and 640x1280 resolution
2016-05-17 20:01:00 +02:00
Gregory Hainaut a4c7541092 gsdx ogl: tentative hack to make FFX go along with depth option
Issue1: Depth buffer is wrongly invalidated only the first page is detected.

Issue2: First page seems to be partially written. Could be a GSdx transfer bug.
Anyway, invalidation only support a page granularity.

So here a quick workaround that will clear depth buffer in case of very small partial write.

Might worth to check regression on nocturne/digital saga
2016-05-17 19:33:12 +02:00
Gregory Hainaut 37c049425d gsdx ogl: gl depth is written by default
Fix bad depth state in dump (yes the bug is 2 years old!)
2016-05-16 20:10:32 +02:00
Gregory Hainaut f5b174f985 gsdx ogl: pitch is always the width of the transfer not the size of the texture 2016-05-16 19:20:01 +02:00
Gregory Hainaut fa921215d9 gsdx ogl: add GL_ARB_get_texture_sub_image extension support
could help to read back a portion of a texture
2016-05-16 18:58:33 +02:00
Gregory Hainaut e02753df46 gsdx ogl: oups, mandatory function pointer was wrongly optional 2016-05-16 18:58:33 +02:00
Gregory Hainaut 37e4d2bd48 gsdx ogl: update old comment 2016-05-16 18:58:33 +02:00
Gregory Hainaut 96b5170d8c Merge pull request #1317 from PCSX2/gsdx-array-coverage
Gsdx array coverage
2016-05-16 18:16:15 +02:00
Gregory Hainaut ed0adf61d3 gsdx ogl: allow to define a debug context in windows.
Be aware: dev build will be slow and quite chatty
2016-05-16 17:08:20 +02:00
Gregory Hainaut 30ce6b0a6a gsdx ogl: check debug function exists
I'm sure they exists in the openGL renderer context but there are
also used in common code. So potentially in DX context.
2016-05-16 16:59:00 +02:00
Gregory Hainaut 99476f4b13 gsdx ogl: explain better previous clear vs framebuffer comment 2016-05-16 16:49:18 +02:00
Gregory Hainaut 08f7bd2dc3 gsdx: add crc hack for Ar tonelico 2
It would requires some texture dynamic width convert shaders.
So as a quick solution, let's add a new CRC hack.

For issue #1362 (granted the CRC is correct)
2016-05-16 10:55:02 +02:00
Gregory Hainaut 1522cba5b0 gsdx ogl: performance note of texture clear vs framebuffer clear
In case of render target. FB clear is better
2016-05-16 10:38:47 +02:00
Gregory Hainaut e776118de9 gsdx-ogl: implement previous DATE optimization in a single shader pass
Faster :) Reduce further the cost of accurate date

The optimization will clear the stencil to 1. So all pixels will have a
single sample that pass both the depth & stencil test. No primitive
overlaps So the destination alpha test can be done directly in the
shader.
2016-05-15 17:44:40 +02:00
Gregory Hainaut 3ab12cef2f gsdx ogl: accelerate special case of accurate date.
Game often uses date to allow a single pixel pass. If this
use case is detected, stencil buffer will be cleared after first pixels
that pass both depth&stencil test.

It seems to reduce the load on the GPU.

Note: with the help of texture barriere, maybe we could implement the algo
with a single pass.
2016-05-15 17:22:58 +02:00
Gregory Hainaut 025be70c42 gsdx-ogl: allow to fallback to a slow accurate DATE when GL_ARB_shader_image_load_store isn't supported
The best is still to have a DX11 generation GPU
2016-05-15 16:29:29 +02:00
Gregory Hainaut 5b061e062c gsdx ogl: replace ClearRenderTarget_i by glClearTexSubImage
Avoid state change, avoid potential texture buffer reallocation

Note: require GL_ARB_clear_texture
2016-05-15 15:55:31 +02:00
Gregory Hainaut 82060320ef gsdx ogl: use draw list size for sprite instead of vertex number to select date algo
Latest overlap detection allow to draw multiple sprite instead of 1,
so the limit based on vertex number is too conservative.
2016-05-15 15:00:52 +02:00
Gregory Hainaut c054b097e9 gsdx ogl: fix wrong depth clear
If a color buffer is still attached and is smaller than depth buffer,
the latter won't be fully cleared.

As a faster alternative, use GL4.4 clear texture function. Avoid to fiddle with
framebuffer and pixel tests.

Fix #1362x Ar Tolenico 2 map clip
2016-05-15 14:57:37 +02:00
Gregory Hainaut caacb1dc9f gsdx-ogl: add texure clear function (GL4.4) 2016-05-15 14:57:11 +02:00
Gregory Hainaut d47d9e5017 gsdx-ogl: fix a minor gcc warning 2016-05-15 13:10:46 +02:00
Gregory Hainaut 913e3d65d2 gsdx ogl: use glViewportIndexedf and glScissorIndexed 2016-05-14 17:18:16 +02:00
Gregory Hainaut cd9ee3c468 gsdx ogl: emulate GL_ARB_draw_buffers_blend and GL_ARB_viewport_array
New functions only set the parameter to a single buffer whereas old function
set all buffers
2016-05-14 17:15:30 +02:00
Gregory Hainaut 4065730e36 gsdx ogl: merge sprite hack take 2
try to detect paving correctly. Avoid to break effect such as Heat effect in Tekken5
2016-05-14 12:24:56 +02:00
Gregory Hainaut 2fc244a3eb gsdx-ogl: inline function only call once 2016-05-14 11:53:02 +02:00
Gregory Hainaut 24a673c482 gsdx ogl: avoid special format on the merge sprite hack 2016-05-13 18:28:21 +02:00
Gregory Hainaut 156b6425d2 gsdx ogl: add UserHacks_merge_pp_sprite option to reduce upscaling glitches
For test purpose, it is higly experimental.

So far it is yield interesting result for tekken5
2016-05-10 08:12:07 +02:00
Gregory Hainaut c019f86529 gsdx ogl: add a performance note for a potential channel optimization 2016-05-10 08:11:28 +02:00
Gregory Hainaut 4effc70792 gsdx hw: Fix regression on align sprite
The hack also updates position of not texture mapped sprite.

Unlike the 2nd hack (round sprite) which can be skipped if TME is disabled
2016-05-09 09:45:34 +02:00
Gregory Hainaut 5b04672ba2 gsdx ogl: separate Tales of Abyss/Urban Chaos effect based on the fbmask
Avoid to rely on CRC
2016-05-08 17:31:13 +02:00
Gregory Hainaut 48d962e15a gsdx log: print detected crc
Helpful to get crc from gs dump
2016-05-08 16:30:50 +02:00
Gregory Hainaut fb6a6f73c4 gsdx: move Tekken5/Tales of Abyss CRC to Dx level 2016-05-07 22:46:42 +02:00
Gregory Hainaut ecbcc566fe gsdx ogl: use GT shader for Tourist Trophy 2016-05-07 22:46:41 +02:00
Gregory Hainaut fc86620327 gsdx ogl: disable channel effect when signature is a bit different
Hack to avoid regression on Blood Will Tell
2016-05-07 22:46:41 +02:00
Gregory Hainaut 30b452543a gsdx ogl: tekken5 uses similar effect as Gran Turismo
So just reuse GT hle shader :) Acid stage is now correct. However it might need
some tuning for others stages.
Still look awful with uspcaled resolution (note internal game framebuffer is around 160x128)
2016-05-07 22:46:41 +02:00
Gregory Hainaut d41613c46a gsdx ogl: add a Tales of Abyss HLE shader
Again fast and efficient but it relies on CRC

v2: forget to update the precompiled shader...
2016-05-07 22:46:41 +02:00
Gregory Hainaut d5681ba01c glsl: fix a bug in urban chaos hle shader
Bug only impact the lsb bits of the depth conversion, so impact is likely small
2016-05-07 22:46:41 +02:00
Gregory Hainaut 70ee8c5bc4 gsdx ogl: add an HLE brightness/contrast shader for GT series.
It works and it is very fast. But it relies on CRC

Others effect need to be tested as well
2016-05-07 22:46:41 +02:00
Gregory Hainaut 91c164ecca gsdx tc: avoid potential division by 0 2016-05-07 18:36:28 +02:00
Gregory Hainaut 265ea82780 gsdx tc: avoid to load data outside of the GS memory
Avoid crash in Kungfu panda
2016-05-06 21:46:29 +02:00
Gregory Hainaut f34e77f08c gsdx: fix regression on 24 bit format (gust game)
bpp is the size of the container format but not the size of the format itself.
For PSM24, bpp is 32, trbpp is 24
2016-05-06 13:49:24 +02:00
Gregory Hainaut e890ce989c gsdx: throw oom exception + error
Texture can't be NULL anymore, so we can remove a couples of check
2016-05-05 18:53:51 +02:00
Gregory Hainaut d58b71688b gsdx debug: auto GL_POP
Nicer and exception safe

V2: miss definition of vs/ps
2016-05-05 18:53:32 +02:00
Gregory Hainaut 37c7fa7663 gsdx: add draw exception (OOM and Recoverable)
The exception will free the unused (but allocated) texture aka the emergency break ;)

Recoverable could be useful for unsupported draw call
2016-05-05 17:47:32 +02:00
Gregory Hainaut c8dddfed06 gsdx hack: move m_skip and m_userhacks_skipdraw to GSState level
Avoid to push argument to call IsBadFrame
2016-05-05 16:22:14 +02:00
Gregory Hainaut 21d1bd48ec gsdx hack: move the CRC setup into a separate function
In order to reduce a bit the overhead of IsBadFrame called each draw calls
2016-05-05 16:03:48 +02:00
Gregory Hainaut 7b0427e86e gsdx hack: use psm lookup + remove now useless log 2016-05-05 15:46:54 +02:00
Gregory Hainaut 8424eeb4ee gsdx tc: small hint for the compiler 2016-05-05 15:32:21 +02:00
Gregory Hainaut 055b9c57e7 gsdx tc: use unscaled size as clamping in Target::Update
Might avoid/reduce crash like #1340
2016-05-05 12:59:49 +02:00
Gregory Hainaut 5948c2d8cd gsdx AMD: broken for broken
Until AMD release the driver with a fix, I can't use 2nd blending source with SSO.

So let's use the first source. Blending/Alpha will be wrong. But it is likely better
than an uninitialized alpha value.
2016-05-05 12:24:55 +02:00
Gregory Hainaut f712c5c6d0 gsdx tc: use GSLocalMemory::m_psm instead of hardcoded value 2016-05-05 12:19:25 +02:00
Gregory Hainaut 642cc50ac4 gsdx hw: reduce verbosity of channel skip log 2016-05-05 12:19:19 +02:00
Gregory Hainaut 7c430c9d3c glsl: fix coordinate in channel depth effect
UV can't be used directly in channel effect

Properly fix Urban Chaos smoke
2016-05-04 18:08:40 +02:00
Gregory Hainaut b8b0a0d662 gsdx hw: remove dead code 2016-05-04 18:08:34 +02:00
Gregory Hainaut 90af611fdb gsdx ogl: Fix channel effect interaction with accurate blending
* Vertex info must be updated before PrimitiveOverlap
* Fix the vertex number (2 not 4)
* add an uint16 cast to shut up Visual Studio
2016-05-02 19:48:11 +02:00
Gregory Hainaut e190841d67 gsdx ogl: improve blending logging 2016-05-02 18:14:02 +02:00
Gregory Hainaut 3077cc82cc gsdx hack: Ghost in the Shell still broken in openGL 2016-05-02 18:14:02 +02:00
Jonathan Li 6430e41fb5 gsdx:windows: Update GUI to reflect recent changes
"Enable Hardware Depth" removed from main dialog.
"Disable Depth Emulation" and "Fast Texture Invalidation" added to Hacks
dialog.

And fix lots of whitespace issues.
2016-05-02 00:28:10 +01:00
Akash 21e6a344a2 GSDX: Improvements to the GSDX dialog (#1284)
GSDX: Improvements to the config interface.

- GSDX: Add new logos to dialog
- GSDX: Remove all the extra null renderers
- GSDX: Changes to renderer combobox
- Sort all the renderers in ascending order. (the fact that D3D11 was
above D3D9 really annoyed me >_<)
- Properly display usage of D3D10/D3D11 on the combobox.
- Use highest available version of DX by default.
- GSDX: gray out upscaling hacks at native resolution
- GSDX-PSX: Modifications to the dialog
- Add new logos
- Remove SDL renderer from combobox since it was removed long ago.
2016-05-01 17:33:53 +01:00
Gregory Hainaut 826b38c47a gsdx tc: use array in GSOffset to store texture coverage
GSOffset is already based on a lookup of PSM/BP/BW. Coverage only adds
the size parameters (so only 256 possibilities)

It replaces the hash lookup with a free array access.
2016-05-01 15:02:36 +02:00
Gregory Hainaut 7add3d1018 gsdx hack: add a lengthy comment to explain man hunt2 hack
An HLE shader replacement could be done for this game but it is
low priority
2016-05-01 13:37:54 +02:00
Gregory Hainaut 4bf484c881 gsdx: move various games crc to dx level
* GT3
* GT4
* GTConcept
* JamesBondEverythingOrNothing
* SkyGunner
* StarWarsBattlefront2
* StarWarsBattlefront
* TouristTrophy
* ICO
* DeathByDegreesTekkenNinaWilliams
2016-05-01 13:22:12 +02:00
Gregory Hainaut 5676acaef9 glsl: support channel effect on depth texture too 2016-04-30 16:07:45 +02:00
Gregory Hainaut e0581ee771 gsdx ogl: Finalize the urban chaos workaround
Rendering must be nice now
2016-04-30 14:52:53 +02:00
Gregory Hainaut 14e1ed06df glsl: add an HLE shader for Urban Chaos
Pro:
* Replace 140 draw calls into a single one
* No complex texture conversion/lookup
* smaller solution than a generic solution
2016-04-30 14:52:53 +02:00
Gregory Hainaut 7d191ebf8e gsdx tc: load palette for pseudo 8 bits depth
Rendering is still broken but I'm afraid it will need a dedicated shader
2016-04-30 14:52:43 +02:00
Gregory Hainaut 12b8704502 gsdx dx: disable channel shuffle 2016-04-30 14:52:43 +02:00
Gregory Hainaut b4c7d32741 gsdx ogl: avoid to wrongly detect a channel shuffle 2016-04-30 14:52:43 +02:00
Gregory Hainaut 1011a757a8 gsdx hw: factorize redundant code 2016-04-30 14:52:43 +02:00
Gregory Hainaut b78c772a14 gsdx: improve detection of channel shuffle
Improve rendering on Prince Of Persia (requires preload data hack)

Worth to re-test: MTGS2/3

Urban Chaos is a bit better but there still a bad overlay
2016-04-30 14:52:43 +02:00
Gregory Hainaut 02dff2653a gsdx hack: sort the file
* separate Dx only/aggresive hack
* add GSC_CrashNburn and GSC_BullyCC to Dx only section
2016-04-30 12:45:06 +02:00
Gregory Hainaut 60267790a1 gsdx: move (most) of the hw hack into a separate file
GSState.cpp was really too big
2016-04-30 12:24:08 +02:00
Gregory Hainaut 7a5e1d4154 gsdx ogl: allow to use a separate texture for the channel effect 2016-04-29 17:34:17 +02:00
Gregory Hainaut a9d25efcde gsdx ogl: extend state to support up to 8 textures 2016-04-29 17:34:17 +02:00
Gregory Hainaut e45f90fac3 gsdx: fix a gcc warning 2016-04-29 17:34:17 +02:00
Gregory Hainaut e195e67a48 gsdx: move Metal Gear Solid CRC to DX level
OpenGL is near perfect :)
2016-04-29 17:34:17 +02:00
Gregory Hainaut 5e5069423b Merge pull request #1321 from PCSX2/gsdx-preloadcrash
GSDX: Avoid crash when TBW == 0 - Preload data frame
2016-04-28 23:06:29 +02:00
Gregory Hainaut cb19451418 gsdx ogl: implement RT channel fetch
Fix blending of Metal Gear Solid/KillZone (and potentially other games)

Potentially impact issue #905, #594, #914, #896
2016-04-28 22:56:38 +02:00
Gregory Hainaut c445a14c46 gsdx ogl: extend shader to lookup a single channel 2016-04-28 22:56:38 +02:00
Gregory Hainaut eaa4fd41e2 gsdx ogl: improve logging of special effect 2016-04-28 22:56:38 +02:00
refractionpcsx2 0aa8fe0f20 GSDX: Avoid crash when TBW == 0 2016-04-28 21:36:21 +01:00
Gregory Hainaut f946f38f26 gsdx hw: keep the debug counter in sync
Otherwise I'm screwed :p
2016-04-28 20:03:53 +02:00
Gregory Hainaut 04a578495f gsdx hw: disable channel shuffle effect
Greatly reduce memory requirement for target
MGS3 at 4x: from 2680MB to 160MB

Remove a couple of (slow) draw calls
2016-04-28 19:46:26 +02:00
Gregory Hainaut f63e38a59e gsdx ogl: as always some games do bad stuff
Let's keep a comment for the moment. I don't know if we need to fix it, neither how.
2016-04-28 19:42:00 +02:00
Gregory Hainaut 45bfe2ad58 gsdx hw: trace some special post processing effect
* Double downscale is done in GTA
* Channel Shuffle is the top-left corner issue

So far nothing is emulated
2016-04-28 19:39:57 +02:00
Gregory Hainaut 5b04f4dab9 gsdx: add optimization note for the future 2016-04-28 18:01:21 +02:00
Gregory Hainaut 4808d89449 gsdx ogl: use enum pretty name 2016-04-28 18:01:20 +02:00
Gregory Hainaut ab31915ce9 gsdx: glsl: fix silly typo
And regression on various games
2016-04-27 09:52:35 +02:00
Gregory Hainaut aeb92592e7 gsdx ogl: use GSUtil::GetClassVertexCount 2016-04-26 19:29:04 +02:00
Gregory Hainaut df70b8bb0e gsdx: fix Q NaN value
Avoid potential undefined results
2016-04-26 19:09:32 +02:00
Gregory Hainaut 726b901dc5 Merge pull request #1304 from PCSX2/gsdx-faster-texture-cache
gsdx tc: reduce texture cache overhead
2016-04-26 16:46:44 +02:00
Gregory Hainaut 49d175b677 gsdx tc: allow to create a dummy Source without tons of memory allocation
It makes shared texture virtually free from the CPU PoV.
2016-04-24 22:30:56 +02:00
Gregory Hainaut ad08701cb1 gsdx tc: trick the texture cache to use a depth format for depth texture
This way we avoid the rescaling of the depth buffer and texture allocation.
2016-04-24 22:18:26 +02:00
Gregory Hainaut 1960d51e60 gsdx tc: properly support 16 bits depth conversion 2016-04-24 22:18:26 +02:00
Gregory Hainaut de38963904 gsdx ogl: plug the new depth sampling in the renderer
Note:
When source format is depth, integral texture coordinate must be used => depth_fmt 1/2/3
2016-04-24 22:18:26 +02:00
Gregory Hainaut fda511a949 gsdx glsl: extend hw shader to sample depth texture
Will use integral coordinate to avoid any rescaling.

Bilinear interpolation isn't supported. I don't think it is allowed to
filter a depth texture anyway.
2016-04-24 22:18:26 +02:00
Gregory Hainaut 583de1bf0b gsdx tc: add a dedicated function to lookup a depth source
The hypothesis is that game will use a depth (aka Z32/Z24/Z16/Z16S)
format when sampling depth texture as color.  Technically one could use
a standard color format but block/pixel order won't be the same.
(otherwise I'm screwed)

=> Hypothesis invalid on GoW. They just do a scrambled rendering...

Lookup info:
* The first searched list is the depth pool as we search a depth
  texture.
* 2nd one is the render target pool (if a depth was converted to a
  render target already)

To avoid any CPU overhead, the source will be a pointer to the real texture
* Conversion (if float texture) will be done on the fly by the shader (GPU).
* Relative rescaling won't be supported. Texture must be fetched with
  integral coordinate
2016-04-24 22:18:26 +02:00
Gregory Hainaut 9ee090a36e gsdx tc: add a shareable texture flag
Plan is to bypass shader conversion/rescaling/copy for depth texture
2016-04-24 22:18:26 +02:00
Gregory Hainaut 8ec1461842 gsdx: increase the number of texture in the pool
It could slightly increase the VRAM requirement but it will reduce texture
allocation/unallocation at start/end of frame.
2016-04-24 22:14:51 +02:00
Gregory Hainaut b4b878ac24 gsdx-ogl: add a note for a future small optimization 2016-04-24 22:14:51 +02:00
Gregory Hainaut 4281b8630b gsdx ogl: remove the useless shadeboost Constant Buffer 2016-04-24 11:08:14 +02:00
Gregory Hainaut d610a6aac4 gsdx glsl: ofc forget to do the shader in bin 2016-04-24 11:07:46 +02:00
Gregory Hainaut d027ed2092 gsdx ogl: merge GSTextureFXOGL to GSDeviceOGL
First file is rather small in openGL. And it is linked to the latter.
2016-04-24 10:55:22 +02:00
Gregory Hainaut 1558220f74 gsdx glsl: create a common header definition
* avoid duplication between all the files for UBO
* remove various interface define
2016-04-24 10:54:39 +02:00
Gregory Hainaut 8ee0783bd3 GSdx: remove useless variable 2016-04-24 10:42:03 +02:00
Gregory Hainaut fa1377a8ee gsdx tc: reduce texture cache overhead
Cache page coverage of texture into a hash map

Test done on Champion of Norrath (paltex + DisablePartialInvalidation)

Profiler:
Self of GSTextureCache::SourceMap::Add 5.39% => 0.23%
Self of GSTextureCache::LookupSource 15.27% => 10.82%

Hard to measure on CoN as it depends on memory transfer. Seem to be 5-10 fps faster.
2016-04-23 19:22:58 +02:00
Gregory Hainaut 67e955919f gsdx: keep dump code enabled in dev release too 2016-04-23 18:29:56 +02:00
Gregory Hainaut a149d6b26f gsdx: use psm.bpp flag to improve code reading 2016-04-23 18:29:39 +02:00
Gregory Hainaut dd98a0b913 gsdx: add a depth format flag 2016-04-23 18:28:50 +02:00
Gregory Hainaut 87867beb0e gsdx-ogl: remove the invalidation of texture
It doesn't help the perf and only create overhead (test done on snow engine game)
2016-04-21 21:07:17 +02:00
Gregory Hainaut 3709b5aecc gsdx: add a small comment to ease code reading 2016-04-21 09:28:44 +02:00
Gregory Hainaut b5ec683318 gsdx-linux: remove custom resolution from the GUI
It would be replaced by a float resolution factor
2016-04-21 09:28:44 +02:00
Gregory Hainaut 821e3ff294 gsdx-ogl: reduce length of debug message 2016-04-21 09:28:44 +02:00
Gregory Hainaut 8217c717f6 gsdx-ogl: require GL_KHR_debug
Will reduce the slowdown on debug build
2016-04-21 09:28:44 +02:00
Gregory Hainaut 9598417f42 gsdx-ogl: GL_ARB_copy_image is now mandatory 2016-04-21 09:28:44 +02:00
Gregory Hainaut 99bccc6dff gsdx-ogl: remove the geometry shader blacklist for Gallium Mesa drivers 2016-04-21 09:28:44 +02:00
Gregory Hainaut cb8088216b Merge pull request #1281 from PCSX2-Alpha/NTSC_saturation
GSDX: Remove some unnecessary/dubious hacks
2016-04-21 09:28:30 +02:00
Gregory Hainaut 59ef668fd2 Merge pull request #1222 from PCSX2/gsdx-black-fmv
Gsdx black fmv
2016-04-21 09:25:36 +02:00
Lauri Kasanen 994c9147f5 textureSW: fix Map with offset 2016-04-19 21:22:53 +03:00
refractionpcsx2 dcb676765e GSdx: Clean up some warning under windows (#1289) 2016-04-14 11:00:58 +01:00
Gregory Hainaut 2e567d6d55 gsdx ogl: update comment
something to test in the future
2016-04-14 10:19:18 +02:00
Gregory Hainaut d129aedfe8 GSdx:vector: add sllv32 and srlv32 for 128 bits op
(variable shift)
2016-04-14 10:18:43 +02:00
Gregory Hainaut 8a7184be3f gsdx: fix hack logic 2016-04-12 11:36:24 +02:00
Gregory Hainaut 6a09fa56fb gsdx: disable nocturne CRC hack
Yeah one less !
2016-04-11 22:41:19 +02:00
Gregory Hainaut 4611264ce3 gsdx: add CRC hack for Nocturne PAL
Reduce depth transfer to the real size of the game. Otherwise
we need to handle a mix of color/depth transfer.
2016-04-11 16:04:04 +02:00
Gregory Hainaut 22a40b65ae gsdx-ogl: always use 1 for GL_UNPACK_ALIGNMENT
Avoid a gl function call for each texture uploads
2016-04-11 12:45:11 +02:00
Jonathan Li d158d4de51 windows: Move baseclasses to a separate project
It saves the buildbots from needlessly recompiling the files for each GSdx
configuration.
2016-04-11 00:22:31 +01:00
Gregory Hainaut 847b57907e Revert "gsdx-ogl: add a new hack to force anisotropic filtering"
This reverts commit 53690cf9d0.

Quoting user:

 For aliasing, the option allow of reduce a little but always very
 visible compared with DX11 even with anisotropic OFF, , furthermore
 many textures bug added with option activated (predictable but not see
 on DX11 with anisotropic ON).

TL;DR doesn't worth it.

Note: it seem to work on DX because DX uses HW texturing in clamp region
mode (and others invalid case). OpenGL uses SW texturing to ensure accuracy
2016-04-10 17:30:49 +02:00
Gregory Hainaut 2941adf364 gsdx ogl: use the new pipeline API
Pre build all SW shader into pipeline.

Directly bind the pipeline instead of all pipeline stages. (less work for the driver)
2016-04-10 17:28:05 +02:00
Gregory Hainaut 95e3dcb448 gsdx-ogl: improve the shader program management
* keep a reference of program/pipeline created to ease the deletion
* extend a bit the API to support multiple pipeline

Final goal will be to use a pre link pipeline for SW shaders. And uses
the default pipeline for HW shaders.
2016-04-10 17:05:33 +02:00
Gregory Hainaut 395e2f31d0 gsdx-ogl: remove dead code (due to legacy removal) 2016-04-10 14:23:58 +02:00
Gregory Hainaut 3f404c8edb gsdx-ogl: update shader pipeline intertace to use vs/gs/ps triplet
Better to have 1 function calls with 3 parameters rather 3 functions call with 1 parameter.
2016-04-10 14:14:30 +02:00
Gregory Hainaut 53690cf9d0 gsdx-ogl: add a new hack to force anisotropic filtering
By default, anisotropic filtering was disabled when textures aren't countinuous.
This hack allows to force it. It can help to reduce aliasing but it would create
unexpected effect on texture boundaries.

Again, someone ought to add the option on Windows too
2016-04-10 13:53:17 +02:00
Gregory Hainaut 9e6cb79f4e gsdx linux: move depth option as a speed hack
Someone ought to add the Windows option too (and DisablePartialInvalidation too)

It might break a couple of games but most of them run better with depth enabled.
2016-04-10 13:22:55 +02:00
Gregory Hainaut 12443da00c GSdx ogl: ouch the typo exp != exp2
Fix some rounding issue on depth effect (shadow in Dot hack games)
2016-04-10 11:31:40 +02:00
Gregory Hainaut 7aaf36d24d gsdx ogl: add function pointer for framebuffer no attachment extension
Could be useful in the future
2016-04-10 11:31:40 +02:00
Gregory Hainaut 7cc13ce99c gsdx-ogl: only bind the FB to the draw FB 2016-04-10 11:31:40 +02:00
Gregory Hainaut d533c393b2 gsdx ogl: rely on DSA API 2016-04-10 11:31:40 +02:00
Jonathan Li fb97de7f79 gsdx:windows: Fix crash on psx side of plugin
I forgot it had a psx emu interface.
2016-04-09 19:56:23 +01:00
Gregory Hainaut b9e8384c11 gsdx-ogl: move the mandatory extension into mandatory section 2016-04-07 22:29:35 +02:00
Gregory Hainaut 121e92a829 gsdx ogl: remove a now useless warning message 2016-04-07 22:28:11 +02:00
Gregory Hainaut 4475c4fe7c gsdx linux: remove the old extension options 2016-04-07 22:27:33 +02:00
Gregory Hainaut cef76de547 gsdx ogl: GL_ARB_direct_state_access is now mandatory 2016-04-07 22:27:28 +02:00
Gregory Hainaut a62019a3fd gsdx-ogl: found_GL_ARB_buffer_storage is now mandatory 2016-04-07 22:17:22 +02:00
Gregory Hainaut 52e3c3516d gsdx-ogl: GL_ARB_separate_shader_objects is now mandatory 2016-04-07 22:11:35 +02:00
Gregory Hainaut f751f70b1e gsdx ogl: GL_ARB_clip_control is now mandatory 2016-04-07 21:57:54 +02:00
Gregory Hainaut dfb4b5a339 gsdx-ogl: GL_ARB_texture_barrier is now mandatory
(GL4.5 extension)
2016-04-07 21:51:37 +02:00
Gregory Hainaut 1208dbe8c7 cmake: add an option to build the new legacy GSdx plugin
+ bump the new one to 1.1.0 (to ease reporting)
2016-04-07 21:46:42 +02:00
Gregory Hainaut 8ccdc05c08 Merge pull request #1217 from PCSX2-Alpha/CRTC_option
GSDX : Add an option for CRTC size and some other video mode stuffs
2016-04-07 21:24:46 +02:00
Gregory Hainaut 17886a9808 gsdx-ogl: allow some accurate date when GL_ARB_shader_image_load_store isn't supported
Close #1282
2016-04-07 19:29:46 +02:00
Jonathan Li 69a84a2782 gsdx:windows: Don't call GSshutdown in GSconfigure
Fixes an issue with the D3D backends crashing if the configure dialog
is accessed and ok is pressed. The D3Dcompiler dll is freed and a null
pointer is dereferenced.

It might break gsdxgui but GSshutdown really should not be called unless
GSdx is shutting down. GSDumpGUI on Windows provides the same (or
better) functionality.
2016-04-07 18:18:36 +01:00
Akash a1b0ae467e GSDX: Remove dubious/unnecessary hacks
* Silent Hill 2 doesn't need the CRC hack
* GSRenderer: no need to explicitly set bottom value for r.
* Texture Cache: Removed a check which couldn't possibly enter true
branch.
2016-04-07 15:15:39 +05:30
Akash 69c9a3d793 GSDX: Add an option to disable NTSC saturation
v2: convert it into a member variable.
2016-04-07 15:15:17 +05:30
Jonathan Li e16b367e6e windows: Workaround weird LoadLibraryEx failures
For some reason some Windows 7 systems (most are unaffected) cannot cope
with LoadLibraryEx and return error code 87 - "The parameter is
incorrect".

Switch to using LoadLibrary instead for any case where Windows 7 is
expected to successfully load the requested dll. Potentially Windows
Vista is also affected.
2016-04-06 19:52:59 +01:00
Gregory Hainaut da9577076c Merge pull request #1278 from PCSX2/gsdx-EE-read-depth-support
gsdx ogl: allow to read the depth buffer
2016-04-06 12:20:16 +02:00
Gregory Hainaut b8a023d158 gsdx ogl: mark OGL object as final
Give the compiler more devirtualization hint
2016-04-05 00:01:43 +02:00
Gregory Hainaut decac5fd12 gsdx ogl: implement an empty BeginScene
Compile will devirtualize it and then remove it during the inline.
2016-04-04 23:32:11 +02:00
Gregory Hainaut cb279ef321 gsdx ogl: help compiler to devirtualize 2016-04-04 23:12:31 +02:00
Gregory Hainaut e3787b6b3c gsdx-ogl: use final qualifier to help compiler
Improve Devirtualization optimization
2016-04-04 22:52:59 +02:00
Gregory Hainaut 771583c559 gsdx-ogl: help the compiler to propagate stride constant
Optimize various multiplication

Note: potentially we can do it with constexpr but I'm not sure of compiler support
2016-04-04 22:46:31 +02:00
Gregory Hainaut 8943a9db4a gsdx hw: GS can draw 2 frames in a single framebuffer
So let's increase the height. It will increase the memory requirement on some games

v2: try to do it automatically
(not sure it will useful as most game will requires it)
v3: let's back to an hardcoded 1280 size. It generates too much issue
2016-04-04 21:30:40 +02:00
Gregory Hainaut 063d2e568a gsdx tc: re-implement frame lookup
Try to avoid random black screen frame

v2: don't force the preload hack on the frame
It creates a ghost image over FMV

v3: support offset within a frame
2016-04-04 21:30:37 +02:00
Gregory Hainaut eec74fd963 gsdx hw: Add an alternate draw call for FMV rendering
The long story:
Game blits FMV far aways of the RT which is actually the input of the RO texture...
Currently GSdx suffers of 2 bugs.
1/ RT is too small
2/ texture isn't properly updated with the rendered value. Texture is invalidated
but it reads back the pixels from the GS memory whereas the correct
value is located on the GPU.

This commit will replace the standard draw by a manual blit. Therefore it avoid
size issue and bad upscaling issue.

v2:
* Use various copy to be more compatible with dx api
* Move all part of the hack info the BlitFMV function

v3: add log message
2016-04-04 21:29:32 +02:00
Gregory Hainaut 72d43b2e56 gsdx tc: add an invalidation procedure to drop sub rt
It will be used in next commit. However, it might not be the best solution
2016-04-04 21:29:32 +02:00
Gregory Hainaut 2ca624c8c6 gsdx tc: implement a read function of Source texture
It will be used in the following commit
2016-04-04 21:29:31 +02:00
Gregory Hainaut d922225e69 gsdx tc:invalidate RT when a texture is written inside it
It often happens the game try to upload the FMV directly which typically
gave a black screen.

Commit fix rules of roses and I hope various black screen FMV

Performance impact must be tested, and I'm afraid of strange texture cache behavior.

V2: check the size of the transfer too
V3: add support of 16 bits format
V4: avoid division by 0
2016-04-04 21:29:31 +02:00
Gregory Hainaut 9aea76b0e8 gsdx tc: store a hint on the target size
The hint is based on the rendering
2016-04-04 21:29:31 +02:00
Gregory Hainaut c4ebdd1f37 gsdx ogl: allow to read the depth buffer
Unfortunately can't be tested on gs dump

Ought to impact #1276 (Incognito/Eat Sleep Play's games, Nocturne too)
2016-04-03 12:30:14 +02:00
Gregory Hainaut 00643dbdfb gsdx tc: report unsupported depth read path
Help to debug depth issue  (aka lighting effects pass through wall)
2016-04-03 11:22:11 +02:00
Gregory Hainaut ee08a6fc53 Merge pull request #1270 from PCSX2/monolithic-build
Monolithic build
2016-04-03 11:20:07 +02:00
Gregory Hainaut 5bdadbc089 Merge pull request #1268 from PCSX2/coverity-uninitialized-members
Coverity uninitialized members
2016-04-03 11:19:37 +02:00
Jonathan Li 7736c90457 gsdx:windows: Fix Windows 7 compile
Somehow D3D_COMPILE_STANDARD_FILE_INCLUDE isn't defined, so the correct
headers aren't being used.
2016-04-02 12:17:52 +01:00
Gregory Hainaut cc1756b8e5 gsdx: disable dump in release build 2016-04-02 00:56:41 +02:00
Gregory Hainaut 8dee7daeb9 gsdx-ogl: init textures for all formats
CID 150171
2016-03-30 19:56:19 +02:00
Gregory Hainaut 856a12f94f gsdx-ogl: init Render object
CID 147002
2016-03-30 19:56:19 +02:00
Gregory Hainaut a4d0c23071 gsdx: init GSCapture field
CID 159404
2016-03-30 19:56:19 +02:00
Gregory Hainaut 1bd8113f66 cmake: add various option to disable plugin support 2016-03-30 10:19:54 +02:00
Jonathan Li e347c8b0b1 gsdx:windows: Remove DXSDK references from property sheets
GSdx doesn't use the DirectX SDK anymore.

Also clean up the property sheets while I'm at it.
2016-03-30 00:03:04 +01:00
Jonathan Li b243e2532b gsdx-d3d9: Remove d3dx9 stuff and use d3dcompile
Using D3DX9 requires the end user to install the Direct X redist files.

Switch to using D3DCompile.
2016-03-30 00:03:04 +01:00
Jonathan Li 2ec8d88d80 gsdx-d3d11: Remove d3dx11 stuff and use d3dcompile
Using D3DX11 requires the end user to install the DirectX redist files.

Switch to using D3DCompile, and distribute D3DCompiler_47.dll for
Windows Vista, 7 and 8 users (Windows 8.1 onwards supplies
D3DCompiler_47.dll with the OS).
2016-03-30 00:03:04 +01:00
Jonathan Li 8f4823d604 gsdx-dx: Load D3DCompiler dll at runtime
D3DCompiler_47.dll will be loaded for Windows 8.1 and above (and maybe
Windows 7 devs), D3DCompiler_43.dll will be loaded for Windows 7 and
below.
2016-03-30 00:03:04 +01:00
Jonathan Li 80b6140a3e gsdx:windows: Prefer Windows SDK over old DX SDK
Some files are present in both the Windows SDK and the old DirectX SDK.
Use the newer versions of the files in the Windows SDK where possible.
2016-03-30 00:03:04 +01:00
Gregory Hainaut f6ee94589f gsdx hw: OI_GSMemClear supports various frame formats
Could help #1267
2016-03-28 10:47:42 +02:00
Gregory Hainaut a99750ae87 gsdx hw: only enable OI_GsMemClear when both depth/alpha test are disabled
Fix #1262
2016-03-26 11:28:28 +01:00
Gregory Hainaut 261ef9ab6a gsdx: move some DBZGT hacks to Dx level
Based on this thread:

http://forums.pcsx2.net/Thread-Dragon-Ball-Z-Budokai-Tenkaichi-3-Graphical-Issue-Emulator-does-not-render-outlines
2016-03-25 08:23:50 +01:00
Gregory Hainaut 791a14bec0 gsdx linux: add a gui box to select the png compression level 2016-03-25 08:23:50 +01:00
Gregory Hainaut 205b496d5c gsdx: fix gl recording regression 2016-03-21 18:52:26 +01:00
Gregory Hainaut 8e5e770fd1 gsdx hw: Ensure GS memory is always cleared properly
It will fix some issues on FMV

Previous behavior can be restored with the hack "UserHacks_DisableGsMemClear"

Fix #768
And maybe #855
2016-03-21 18:26:22 +01:00
Gregory Hainaut c43b1ac201 gsdx tc: extend the fast invalidation hack to limit the size of target read
It actually removes the previous hack that read the full target.

Unfortunately snowblind engine game uses big target so the read is very big too (1280x448)
which is killer for the perf. Whereas the game requires only 24x12 texels

Give a 2x speed boost on Champion of Norrath !!!
2016-03-20 18:11:44 +01:00
Gregory Hainaut 46ff5dccff gsdx: be debug friendly 2016-03-20 16:15:00 +01:00
Gregory Hainaut a83b8d62ec gsdx linux: add a gui checkbox for the "fast texture invalidation" hack 2016-03-20 13:59:24 +01:00
Gregory Hainaut 7eb242d3ad gsdx-ogl: remove the ogl_texture_storage option
The previous commits make PBO faster for all drivers.
2016-03-19 01:00:52 +01:00
Gregory Hainaut 68aa182b16 gsdx-ogl: sort the texture upload code
I wanted to do a separate path for palette texture. So far, it isn't very
conclusive.
2016-03-19 00:58:58 +01:00
Gregory Hainaut 46a4d2dc47 gsdx-tc: add UserHacks_DisablePartialInvalidation for snowblind engine game
Games uses very special texture with a lots of repeating.

It is much faster to send the full texture rather than trying to partially invalidate it.

On my gs dump:
FPS: 29 => 68 !
2016-03-19 00:25:58 +01:00
Gregory Hainaut eb69522641 gsdx-ogl: optimize texture memory upload
Previous code was
1/ unpack texture into local buffer
2/ copy local buffer into gl buffer
3/ copy gl buffer to texture

New code is
1/ unpact texture directly into gl buffer
2/ copy gl buffer to texture

Perf increase (done in native)
DQ8:   255 -> 270 (+5%)
Colin: 126 -> 135 (+8%)
ZoE:   50  -> 54  (+8%)
2016-03-18 20:24:42 +01:00
Gregory Hainaut da741e294e gsdx-ogl: optimize GPU->CPU memory transfer size
Might help for snow engine game (a little)

Previous code use to read the full texture whereas now it will be limited
to the size of the useful data.
2016-03-18 20:24:42 +01:00
Akash 9b0ecdf43f GSDX-OGL: gray out MSAA on opengl renderer
It's currently unimplemented on OpenGL renderer.
2016-03-14 18:38:40 +05:30
Jonathan Li b516c1001a windows: Set _WIN32_WINNT to 0x0600 (Windows Vista) 2016-03-13 13:41:16 +00:00
Jonathan Li 9ed9b2d8cd windows: Switch to DefaultPlatformToolset aka non-XP toolsets
Basically I ran
find . -name "*.vcxproj" -exec sed -i -e 's/_xp//' {} \;

This will likely break XP, but it paves the way on Windows for a PCSX2
that does not require the DirectX redistributables to be installed for
Windows 8, 8.1 and 10 users. Windows Vista and 7 users will still require
the DirectX redistributable files for XInput and XAudio, though PCSX2
should still be capable of running if a user does not actually use either
of them.
2016-03-13 12:04:28 +00:00
Gregory Hainaut 653998e005 gsdx: add vertex data offset in comment
Avoid to recompute them every time I want to decode the vertex stream
2016-03-12 15:53:38 +01:00
Gregory Hainaut de7d127c52 gsdx-ogl: create a small macro to load function pointers 2016-03-12 15:52:36 +01:00
Gregory Hainaut 95ef4e20f8 gsdx-ogl: load GL_ARB_viewport_array function pointer for the future 2016-03-12 15:52:36 +01:00
Gregory Hainaut 56c2e94daf gsdx-ogl: sort extension requirement
All GL4 extensions supported by DX10 class GPU will be soon mandatory

Namely:
* GL_ARB_copy_image
* GL_ARB_texture_barrier
* GL_ARB_clip_control
* GL_ARB_direct_state_access
* GL_ARB_separate_shader_objects
* GL_ARB_buffer_storage
2016-03-12 15:52:36 +01:00
Gregory Hainaut a3788c4e98 Merge pull request #1225 from PCSX2-Alpha/scaling_fix
GSDX: set a safe limit to Framebuffer width
2016-03-12 15:42:18 +01:00
Akash 997f0535f5 GSDX: Set a safe limit to Framebuffer width
There are likely few games (RE4) which constantly change the FBW register value causing the framebuffer width to be updated at every interval. Adding a safe limit (512) similar to frame buffer height would prevent such constant changes of the framebuffer width when FBW changes once again to an even lower value.
2016-03-11 07:28:05 +05:30
Gregory Hainaut ec57f1305a gsdx: detect rendering outside of the framebuffer
Could help to detect rendering issue (for example missing fmv)
2016-03-10 19:03:39 +01:00
Gregory Hainaut bc73195193 gsdx-ogl: pack more tightly the FS UBO
Merge TA vec2 + Af vec1 into a single vec4
2016-03-10 18:29:05 +01:00
Jonathan Li 3e278a2e75 Merge pull request #1197 from turtleli/gsdx-png
Gsdx: PNG screenshots (Windows), use libpng directly
2016-03-08 23:49:56 +00:00
Gregory Hainaut 7b8616ac7b gsdx-ogl: add function pointer for query object 2016-03-06 13:39:24 +01:00
Jonathan Li 6b950d0408 gsdx: Allow dump and capture PNG compression to be changed
Valid values for png_compression_level are from 0 (no compression) to 9
(max compression). The default is 1.

v2: Use zlib Z_BEST_SPEED (1) and Z_BEST_COMPRESSION (9) defines.
2016-03-02 22:58:45 +00:00
Jonathan Li a97cbf038c gsdx-d3d9: Save screenshots as PNG files
v2: Avoid unnecessary memory copy
2016-03-02 22:57:17 +00:00
Jonathan Li d865efceb9 gsdx-d3d11: Save screenshots as PNG files 2016-03-02 22:57:16 +00:00
Jonathan Li cf939620ea gsdx-ogl: Save depth image as RGB and alpha images 2016-03-02 22:57:16 +00:00
Jonathan Li 97215008c9 ci|cmake|debian: Remove png++ build dependencies
GSdx now uses libpng directly. png++ is now unused, so let's remove it.
2016-03-02 22:57:15 +00:00
Jonathan Li ee5861efc8 gsdx: Remove non-PNG code
It's no longer in use.
2016-03-02 22:57:12 +00:00
Jonathan Li 38edd77034 gsdx-ogl:windows: Save screenshots as PNG files
v2: Add zlib directory to property sheet
2016-03-02 22:52:08 +00:00
Jonathan Li 87dcfbc645 gsdx-png: Use libpng directly instead of via png++
v2: Increase compression to maximum
v3: Add zlib to GSdx build dependencies
v4: Reduce memory usage
2016-03-02 22:48:54 +00:00
Gregory Hainaut edef3ad8c3 Merge pull request #1170 from PCSX2-Alpha/TC_Scaling
GSDX: Detect RT size based on display and frame registers.
2016-03-02 13:51:28 +01:00
Akash b07b06a9fb GSDX-Texture Cache: Rework scaling function
The following patch uses the height value of the display rectangle rather than make an estimation of the Frame buffer height when the game uses a non-referenceable height (or) width.
2016-02-24 09:14:01 +05:30
Gregory Hainaut cb776d2f50 gsdx:atomic: better match the old if(!_interlockedbittestandset(&m_mapped, 0)) behavior
Thanks @turtleli
2016-02-23 18:43:44 +01:00
Gregory Hainaut f9b4ff17a5 gsdx: drop interlocked* function on linux 2016-02-22 19:12:50 +01:00
Gregory Hainaut a601991f91 gsdx: add atomic for transaction scope object 2016-02-22 19:12:50 +01:00
Gregory Hainaut f904cd6c4a gsdx: add atomic for SW Renderer
V2: fix assertion
2016-02-22 19:12:37 +01:00
Gregory Hainaut 9bbb0fe1f6 gsdx: add atomic for texture upload
V2: fix init of atomic flag object
2016-02-21 18:17:53 +01:00
Gregory Hainaut a66c911fed cmake: factorize debug/dev define 2016-02-21 16:17:10 +01:00
Gregory Hainaut 9ba470fc63 gsdx-ogl: properly handle t_float in GS
f8c442cf76 misses the swap of t_float in GS

Fix regression in Okami

Bonus: factorize VS_WILDHACK in the VS
2016-02-21 11:48:30 +01:00
Gregory Hainaut bef8447447 Merge pull request #1186 from PCSX2/gsdx-unoptimize-vs
gsdx-ogl: make VS more generic
2016-02-20 10:39:19 +01:00
Gregory Hainaut 6002719c8c Merge pull request #1185 from PCSX2/tekken5-fast-depth
gsdx: no depth lookup optimization
2016-02-20 10:24:21 +01:00
Gregory Hainaut 1853d0d16d gsdx: no depth lookup optimization
Don't lookup a depth buffer if depth test is always pass without write

Boost performance on Tekken5 when depth emulation is enabled in openGL
(Tekken5 sets same address for both the RT and the depth but depth is disabled)

v2:
Keep ds if DATE is enabled (some implementation uses a stencil buffer)
Be more aggressive to avoid an useless depth lookup
2016-02-18 20:35:50 +01:00
Gregory Hainaut f8c442cf76 gsdx-ogl: make VS more generic
Texture coordinate could be dummy/float/int integral/int normalized.

Old behavior:
* VS was in charge to select the texture coordinate
* int integral format wasn't supported

New behavior:
* Always compute all formats
* FS will be in charge to select the good format

Impact:
* VS will be slightly slower but it reduces shaders permutation from
   little to 0 (won't be bad for CPU)
* FS speed isn't impacted as 2 separate code paths were already required
  to support both format
* Rasterizer will be 33% slower but unlikely to be the limited factor of
  the GPU
* In future we could directly use the integral format in the FS.

V2: remove useless PSin_t
2016-02-18 19:02:05 +01:00
Gregory Hainaut 0dadc124d3 gsdx-ogl: invert behavior of unsafe user hack
It would be on by default. Unsafe & fast path.

The hack is a security if someone encounters any issue

v2: update Windows gui file
v3: fix typo in tooltip and linux gui
2016-02-18 18:48:13 +01:00
netoale b910e20413 Update GSCrc.cpp
added french version of Simpsons The Game 0x5C1EBF61
2016-02-15 21:56:53 +01:00
refractionpcsx2 909584d473 GSDX: Disable Nvidia hack when in native res 2016-02-15 20:27:51 +00:00
Gregory Hainaut 8ae7f60b04 Merge pull request #1175 from PCSX2-Alpha/GSDX_stuffs
GSDX: Vertical frequency corrections and extra stuffs
2016-02-13 18:15:49 +01:00
Gregory Hainaut 77f9113301 gsdx-gl: use CONTEXT_FLAG_NO_ERROR_BIT_KHR to reduce driver overheard
Didn't test it yet as my driver is too old.

Note: might break the open source drivers.
2016-02-13 15:28:11 +01:00
Akash e810428c86 GSDX: Remove some old comments
Disgaea 2 intro FMV now works fine with/without upscaling. (confirmed
with rama)
2016-02-12 12:05:42 +05:30
Akash 465cfb4fad PCSX2-GSFrame: Make upscaling impact resolution values 2016-02-12 11:57:41 +05:30
Akash 67a7a63a36 GSDX: Add vertical frequency for all video modes 2016-02-12 05:28:30 +05:30
Akash 1445bf7fb1 GSDX: Extend macros for all video modes.
The following patch detects the other video modes based on Phased lock loop divider (LC)
2016-02-12 04:43:57 +05:30
Gregory Hainaut 253e801f51 linux: enable float operation on SSE unit
Potentially faster and requires to flush denormal float to 0
2016-02-09 18:24:12 +01:00
Gareth Poole 0b362fd866 GSdx: Fix spelling issues in GSdx Linux configuration window 2016-02-08 19:14:56 +01:00
Gregory Hainaut 51b40c6b18 gsdx: move black CRC hack from openGL to DX level
Rendering is much nicer this way
2016-02-06 17:32:12 +01:00
Jonathan Li 93dc772565 GSdx: Missed a _WINDOWS usage...
Visual Studio Find and Replace can only be trusted if all the files are
included in the project. I suppose it's time to add any missing files
to the relevant projects...
2016-02-04 19:12:46 +00:00
Gregory Hainaut 85f64b8c08 Merge pull request #1137 from PCSX2-Alpha/CRTC_Scaling
PCRTC: Proper handling for 720P/1080P video modes.
2016-02-01 10:11:58 +01:00
Akash c889659ad7 GSDX: Prevent a bad division
GetDeviceSize() already does a half division based on the INT and FFMD
registers.
2016-01-30 05:20:06 +05:30
Akash 7407162dfe GSDX: Add some nice macros 2016-01-30 05:19:53 +05:30
Gregory Hainaut 841df74010 gsdx: add info to get a working driver 2016-01-28 21:18:24 +01:00
Jonathan Li 0f11838d93 gsdx: s/_WINDOWS/_WIN32/
It's the proper Windows preprocessor macro.
2016-01-27 22:41:45 +00:00
Gregory Hainaut 2ff611137e pcsx2|lilypad|gsdx: use portable printf format
(portable: let's see VS compilation...)
2016-01-22 19:46:03 +01:00
Gregory Hainaut da4d3562f5 gsdx-ogl: update status of the SSO extension
AMD (proprietary) is working on it
Free driver will be fixed on Mesa 11.2 (and I hope mesa 11.1.2)
2016-01-22 09:28:59 +01:00
Gregory Hainaut 3f3141c186 GSdx-ogl: limit accurate sprite blending to smaller draw call
Completely restore speed in Zone of Ender

Fix #1093
2016-01-22 09:07:35 +01:00
Gregory Hainaut 69d585e867 Merge pull request #1114 from remeh/clang-unused-param
gsdx: cmake: don't display "unused parameters" warnings on release bu…
2016-01-22 08:07:07 +01:00
Akash 22fccd5143 GSDX: Add a nice debug message 2016-01-20 04:29:23 +05:30
Akash ebb6e34196 PCRTC: Fix video modes higher than 480P 2016-01-20 04:23:45 +05:30
willkuer fd412c2938 gsdx: Generic GSSetting
The old implementation saved the current value of a GSSetting as uint in
a field called 'id'. The  implementation of GSSettings suggests that
GSSettings  could be saved in a database with id as primary key. This
would require a translation look up from id to value but  could have all
advantages of a database. However the interface to GSSetting was never
implemented like that.

In the new implementation GSSetting has a 'value' field that stores an
int representative value of the desired state. Additionally the
constructor is 'overloaded' as template to reduce casting in the
consumer code. However all consumer values need to be castable to int.

Accordingly combobox initialization was adjusted.
2016-01-18 23:59:27 +01:00
Gregory Hainaut 5bf12519da Merge pull request #1105 from ssakash/CRTC_-NTSC-height-saturation
PCRTC: Better handling of CRTC height saturation
2016-01-17 16:38:59 +01:00
Gregory Hainaut 254081e3ad Merge pull request #1115 from turtleli/gsdx-ogl-blend
gsdx-ogl: Improve accurate blend sprite draw speed
2016-01-17 15:42:07 +01:00
Jonathan Li 37deeb0d52 gsdx-ogl: Optimise overlap detection algorithm
Vectorise coordinate min/max sorting, and use the ordered runion
instead.
2016-01-16 19:21:56 +00:00
Jonathan Li 14dffa762b gsdx: Add runion_ordered to GSVector
Allows to save a few instructions cycles when xy and zw are already
sorted (min and max rectangle coords).
2016-01-16 19:21:55 +00:00
Jonathan Li 2fc3ef8124 gsdx-ogl: Add sprite overlap statistics to debug messages 2016-01-16 19:21:54 +00:00
Gregory Hainaut 35568f6425 gsdx: disable simd in 64 bits
Let's concentrate first on SSE2

This commit fuses a couple of ifdef
2016-01-16 14:34:00 +01:00
Gregory Hainaut 022cd9cd64 gsdx: s/u32 pointer/uptr/ 2016-01-16 14:34:00 +01:00
Jonathan Li 74ace74d50 gsdx-ogl: Group non-overlapped accurate blend sprite draws
Reduces the number of draw calls and barriers when drawing sprites.
2016-01-13 08:07:53 +00:00
Jonathan Li f3b6829c74 gsdx-ogl: Restart collision detection algorithm for remaining sprites
It's useless on its own, but it prepares for the next commit.
2016-01-13 08:02:42 +00:00
remeh 28cfd50f08 gsdx: cmake: don't display "unused parameters" warnings on release build with clang. 2016-01-12 13:42:47 +01:00
Akash aade5278d8 PCRTC: Better handling of CRTC height saturation 2016-01-10 21:47:59 +05:30
Gregory Hainaut 7c7de87fcf Merge pull request #1078 from PCSX2/gsdx-unsafe-fbmask
Gsdx unsafe fbmask
2016-01-08 19:26:14 +01:00
Gregory Hainaut 3451f7e760 gsdx-ogl: handle invalid gl_lengh in debug message
Mesa intel sets it to -1.

Close #1089
2016-01-07 21:49:17 +01:00
Akash 8c5c73ea4b GSDX: Fast blending option for windows 2016-01-03 15:40:04 +01:00
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 bb15e54438 gsdx-linux: add a new gui entry for the previous hack 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
Jonathan Li bb37d1c339 gsdx:windows: Don't change renderer when changing adapter
The previous behaviour loaded the saved renderer config whenever the
adapter combobox was changed. The renderer will now only change if the
new adapter doesn't support the currently selected renderer (i.e
Direct3D11 might not be supported, so it'll revert to Direct3D 9).

Fixes #1080.
2016-01-02 22:20:30 +00:00
Jonathan Li 12e80c271b gsdx:windows: Widen Hacks dialog slightly
The Wild Arms Offset text was slightly cut off due to the label being
too small. Make the dialog slightly wider so the full text will fit.

Someone should probably make the dialog look nicer at some point.
2016-01-02 22:17:30 +00:00
Gregory Hainaut fc98fc9781 gsdx: only enable "please fix me" message on debug build 2016-01-02 18:53:15 +01:00
Gregory Hainaut 7aae0ce394 gsdx ogl: minor string update 2016-01-01 14:43:47 +01:00
Gregory Hainaut 902e295089 gsdx: fix onimusha crash in custom resolution
I don't understand why but it seems it needs more than 8MB
2015-12-30 19:14:52 +01:00
Gregory Hainaut bfa53af50f gsdx linux: fix ShadeBoost option case 2015-12-30 19:14:52 +01:00
ramapcsx2 d84d765aeb whops 2015-12-30 18:53:38 +01:00
ramapcsx2 8e3aec8aaf gsdx dialog: renderer order and naming changed. due to many factors, we can't yet remove any of the software options. naming / order changes are possible though, if a majority votes for it. 2015-12-30 18:06:54 +01:00
Kingcom 191453d89a gsdx: fix windows compilation 2015-12-28 22:05:01 +01:00
Gregory Hainaut a595a09fbd gsdx: increase buffer to have crash in case of overflow
Avoid a crash on Onimusha3 (PAL 60HZ)

In theory it will be better to find the root cause of overflow. I.e. somewhere in this
code below. Dirty rectangle is too big.

***********************************************************************
if(rowsize > 0 && offset % rowsize == 0)
{
    int y = GSLocalMemory::m_psm[psm].pgs.y * offset / rowsize;

    if(r.bottom > y)
    {
        GL_CACHE("TC: Dirty After Target(%s) %d (0x%x)", to_string(type),
                t->m_texture ? t->m_texture->GetID() : 0,
                t->m_TEX0.TBP0);
        // TODO: do not add this rect above too
        t->m_dirty.push_back(GSDirtyRect(GSVector4i(r.left, r.top - y, r.right, r.bottom - y), psm));
        t->m_TEX0.TBW = bw;
        continue;
    }
}
***********************************************************************

So as a temporary solution (that will likely stay for a couple of
years), buffers were increased.
2015-12-28 21:40:06 +01:00
Gregory Hainaut c36fccdd8e gsdx: fix crash when preload data frame is enabled
Height of the dirty rectangle must be the GS size of the RT. Of course
RT doesn't have any height so we compute the max safest value.

Fix issue #987

Candidate for 1.4 release
2015-12-28 18:00:14 +01:00
ramapcsx2 ef62d753d1 Merge pull request #1056 from ssakash/gsdx_swthreads
GSDX: Some change to software rendering threads
2015-12-28 17:23:32 +01:00
willkuer 0c4b25bcec gsdx: defaulting extra rendering threads to 2 2015-12-28 01:05:25 +05:30
Gregory Hainaut ac0d7f74cf gsdx: reorder renderer config code & fix linux gui
Group all DX option into a unique section (avoid tons of ifdef)

Rename Null renderer as "None (Core Benchmark)"
2015-12-27 11:24:05 +01:00
Akash 21c6fa5f1b gsdx-gui: Label and Tooltip changes to RT option 2015-12-23 19:51:13 +05:30
Akash acb82389c8 GSDX: disable SW mode options on hardware renderer 2015-12-23 12:30:22 +05:30
Akash 5e67276b6c GSDX-OCL: remove OCL device combobox from GUI
The following patch hides the combobox from the GUI when ENABLE_OPENCL macro is not defined.
2015-12-22 04:15:56 +05:30
ramapcsx2 3fd0b10762 small fix for WinXP / GSdx renderer cleanup 2015-12-21 19:53:36 +01:00
ramapcsx2 3210740872 Patch by r5 that reorders renderers in GSdx' config dialog. Also removes some redundant options. 2015-12-21 19:30:03 +01:00
Gregory Hainaut 077f06562f gsdx-linux: use standard code for the renderer box
Fix the openCL issue and code is cleaner
2015-12-20 19:33:39 +01:00
ramapcsx2 9092be3a52 GSdx: better default renderer selection. Thanks, Gregory :) 2015-12-20 16:03:58 +01:00
ramapcsx2 16231f599b Merge branch 'master' of https://github.com/PCSX2/pcsx2 2015-12-20 14:47:27 +01:00
ramapcsx2 43b9caf735 GSdx: default renderer to DX11 hw. SPU2-X: default output module to xaudio2 (portaudio has issues selecting the proper hardware device) 2015-12-20 14:46:59 +01:00
Gregory Hainaut cae0ac2d3f gsdx: change gl reporting color message 2015-12-20 14:15:46 +01:00
Gregory Hainaut b1d7f0e3fd gsdx: remove openCL from the ini if it isn't enabled 2015-12-14 10:00:28 +01:00
Jonathan Li 2e1ea22532 gsdx: Make TV Shader F7 toggle temporary
Both the Linux and Windows config dialogs now have a TV Shaders combobox,
so the F7 toggle can be made temporary. This makes the hotkey behaviour
consistent with all the other hotkeys.
2015-12-02 19:45:24 +00:00
Jonathan Li 6e5b8c25dd gsdx:windows: Adjust dialog margin values 2015-12-02 19:07:36 +00:00
Jonathan Li 0f2cb4e2f5 Merge pull request #993 from ssakash/GSDX_dlgchanges
gsdx:windows: Add TV shaders and change GUI design
2015-12-02 18:58:09 +00:00
ramapcsx2 4c765a04f7 Change an outdated GSdx comment. It may confuse people nowadays. 2015-12-01 21:36:23 +01:00
Akash 1c6a717e93 GSDX: New shader dialog 2015-12-01 15:01:12 +05:30
Gregory Hainaut a026a1979f gsdx linux: align checkbox text vertically
like Windows :p
2015-11-28 13:24:12 +01:00
Akash 8b6ad4ff85 GSDX-TC: check userhacks for preload data frame 2015-11-22 10:49:46 +05:30
Gregory Hainaut df87b64ca5 gsdx-linux: left align label 2015-11-20 17:36:03 +01:00
Gregory Hainaut a41308e8c3 gsdx-linux: add a gui option for the tv shaders 2015-11-20 17:36:03 +01:00
Gregory Hainaut 19c9a0b441 gsdx: remove aggressive threading
http://wiki.pcsx2.net/index.php/PCSX2_Documentation/Threading_Basics
2015-11-20 17:36:03 +01:00
Gregory Hainaut 7a69812b17 Merge pull request #927 from PCSX2/preload-rt
gsdx-tc: extend preload frame hack to load target too
2015-11-16 09:36:31 +01:00
Jonathan Li 96c921c776 gsdx: Update DirectX end user runtimes URL
The old one isn't working. I don't think there's a URL that redirects to
whatever language the user is using (unless my browser settings are
wrong), so I've just used the English US URL.
2015-11-15 22:10:00 +00:00
Gregory Hainaut 67551f31fd gsdx: use constant expression in offsetof
Well previous expression was a constant already but
compiler failed miserably.
2015-11-13 18:38:48 +01:00
Gregory Hainaut 7eb0f3564b gsdx: AVX is M_SSE == 0x500
0x501 is for AVX2
2015-11-13 18:29:34 +01:00
Gregory Hainaut 967cc0b37b gsdx: align variable 'offsetof' of x64.avx with x86 2015-11-13 18:25:23 +01:00
Gregory Hainaut 3fea5779df gsdx: align sprite test of x64.avx with x86.avx 2015-11-13 18:25:23 +01:00
Gregory Hainaut 736656f7d6 gsdx: properly defined type for xbyak
Compatible 64 bits and avoid local modification
2015-11-13 09:30:48 +01:00
Johannes Obermayr f4a76c48c2 Use GLsizeiptr on Mesa >= 20150122.
Signed-off-by: Gregory Hainaut <gregory.hainaut@gmail.com>
2015-11-12 21:21:13 +01:00
Gregory Hainaut 9b2b024721 gsdx-linux: add the preload gs hack option 2015-11-12 21:00:10 +01:00
Gregory Hainaut ef3aa17025 gsdx-ogl: disable useless Nvidia driver message 2015-11-12 17:04:54 +01:00
Gregory Hainaut d67ba015c5 Merge pull request #962 from ssakash/GSDX_sizechecks
GSDX: Improve FB size handling
2015-11-12 12:17:31 +01:00
Gregory Hainaut c12958bf10 gsdx: sign-compare
Need review
2015-11-12 12:11:44 +01:00
Gregory Hainaut abb4cb4810 plugin API: use const char* insead of char*
I hope it doesn't change the ABI

v2: fix GSnull/zzogl/zerogs
v3: duplicated code on windows...
2015-11-12 12:11:42 +01:00
Jonathan Li 4eb57cde0e gsdx: Adjust current renderer message
The leading space was really annoying me. Also make the variable local
instead of static.

And fix a bad indentation.
2015-11-11 18:52:52 +00:00
refractionpcsx2 52802371e4 GSdx D3D11: Workaround for Gust games, must enable sprite hack (which these games need anyway) and it will fix the squares caused by the Nvidia fix. Not a perfect solution but we can't have it both ways :( 2015-11-10 22:58:53 +00:00
willkuer 9245d3ed7e gsdx: RendererEnum
1. Add GS_Renderer Enum

Replace all instances of int/uint32 renderer identifier by a strongly
typed enum and appropriate casts.

Only instances in GS[*].cpp/h classes were touched. GPU[*].cpp/h classes
do not to follow the same convention.

2. Add default renderer according to OS

The default renderer is OS dependent (Win -> Dx9HW, others -> OGLHW).
Consequently one should always check againt the appropriate default
value on config load.

The old behaviour was only - if a at all - problematic if the respective
element in the gsdx.ini was missing and probably even then didn't create
issues. The current implementation is still more stable and does not
depend on the implementation of GS.cpp -> GetConfig()
2015-11-10 00:26:39 +01:00
Jonathan Li 44d89308c9 Revert "Revert "gsdx|spu2-x: Use atlcomcli.h for CComPtr definition""
This reverts commit 9bb990e9ed.

Fight! Ahem...
2015-11-09 20:55:07 +00:00
Akash d5ba546d2e GSDX: Improve CRTC output size handling 2015-11-09 05:52:42 +05:30
Jonathan Li 9bb990e9ed Revert "gsdx|spu2-x: Use atlcomcli.h for CComPtr definition"
This reverts commit 0eb771c2a6.

The buildbot apparently cannot find atlcomcli.h. Oh joy.
2015-11-08 20:46:41 +00:00
Jonathan Li 49ff324882 Merge pull request #955 from turtleli/replace-comptr-h
gsdx|spu2-x: Use atlcomcli.h for CComPtr definition
2015-11-08 13:27:28 +00:00
Gregory Hainaut 4ef0572ceb gsdx-ogl: disable copy constructor
'class GSVertexBufferStateOGL' does not have a copy constructor which is recommended since the class contains a pointer to allocated memory.
2015-11-06 23:01:59 +01:00
Gregory Hainaut 3e4c3353ce gsdx-ogl: missing break 2015-11-06 23:01:58 +01:00
Gregory Hainaut 9f1649ae57 gsdx: use a type in sizeof
(warning) Suspicious usage of 'sizeof' with a numeric constant as parameter.
2015-11-06 23:01:58 +01:00
Gregory Hainaut 7c6d2361af gsdx: use scalar delete
(error) Mismatching allocation and deallocation: data
2015-11-06 23:01:58 +01:00
Gregory Hainaut f3394b16b8 gsdx: use standard quote character
Nicer with tool that support ANSII text (cppcheck)
2015-11-06 23:01:58 +01:00
Jonathan Li 0eb771c2a6 gsdx|spu2-x: Use atlcomcli.h for CComPtr definition
VS2013/VS2015 community includes it, so everything will still compile
for everyone.

Also delete common/include/comptr.h.
2015-11-06 18:52:33 +00:00
Jonathan Li 4ab092d011 Merge pull request #911 from ssakash/gsdx_debug
Gsdx: Add Mipmap (Software mode) and preload data frame to GUI.
2015-11-06 13:01:49 +00:00
Akash 754a7eb7de GSDX: Update toggle key messages 2015-11-06 01:47:53 +05:30
Akash d866b5592e GSDX: Add two new options to GUI.
The following patch adds Mipmap option (software mode exclusive) and Preload Data Frame (Hardware mode exclusive) to the GSDX plugin settings for debug purposes.
2015-11-06 01:47:44 +05:30
Gregory Hainaut 5ba41306ea gsdx-tc: HasSharedBits uses PSM not address
Nice heap overflow. I'm surprised that it kinda worked.
2015-11-02 07:36:37 +01:00
Gregory Hainaut 59be6c8710 gsdx: protect some options to avoid buffer overflow
Keep TVShader/interlace/aspectratio in the legal range.

Avoid a crash if the user (aka me) edit the ini file with bad value.
2015-10-25 21:44:20 +01:00
Gregory Hainaut b87cda94c5 Merge branch 'glsl-fix-tv-shaders' of git://github.com/turtleli/pcsx2 into turtleli-glsl-fix-tv-shaders 2015-10-25 21:23:39 +01:00
Gregory Hainaut bba67fbd83 Merge pull request #912 from PCSX2/accurate-blending-issue-762
gsdx-ogl: PrimitiveOverlap requires real rectangle
2015-10-25 20:55:41 +01:00
Jonathan Li 1659d5974e gsdx-ogl: Fix scanline, diagonal, triangular TV shaders
PSin.p is normalised, so integer conversions won't work. Use
gl_FragCoord instead.
2015-10-25 19:20:22 +00:00
Gregory Hainaut 50e6306331 Merge pull request #919 from ssakash/coverity_init
Coverity: Initialize class members
2015-10-25 20:08:46 +01:00
Gregory Hainaut 03bf1ec7b3 gsdx-tc: extend preload frame hack to load target too
The goal is to check the impact on game that have wrong RT content.

It helps a bit Smash Court Tennis Pro Tournament 2 but the game suffers
another texture cache bug. (RT BW is 10 whereas texture BW is 8)

Note: Armored Core: Last Raven must be tested (only game so far
that rely on the option and I didn't want to add a new one).
2015-10-25 15:26:38 +01:00
Gregory Hainaut 295f867118 gsdx: invalid alpha after an EE write
Typical wrong draw:
1/ draw in 32 bits
2/ draw in 24 bits
3/ Use alpha as a texure. (Must reuse the GPU data)
4/ Write alpha from EE
5/ Use alpha as a texure. (Must upload new data)

This commit fixes the step 5.

Fix #917 (Conflict - Desert Storm)
2015-10-24 16:23:50 +02:00
Gregory Hainaut 5cbd0cf42a gsdx-debug: add more push/pop debug group on the init 2015-10-24 14:14:37 +02:00
Gregory Hainaut 9ba949c2d9 gsdx-debug: support correct logging on mesa
By default low severity message were disabled. (thanks to be open source)
2015-10-24 14:14:37 +02:00
Akash c1f1646dab GSDX: Initialize class members
CID 146973 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)2. uninit_member: Non-static class member overflow is not initialized in this constructor nor in any functions that it calls.
2999}
2015-10-23 01:35:15 +05:30
Gregory Hainaut 87001326f6 gsdx: remove 4Y-old unused code
It was never used.
2015-10-22 19:51:03 +02:00
Gregory Hainaut a8968257db glsl: keep fract in [0;1] range
Shin Megami Tensei Lucifers seems to generate infinites values.
I suspect that DX always clamp fract output.

Finally fix #782 !
2015-10-22 18:36:45 +02: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 92553add8e gsdx-ogl: accurate date regression. Bad interaction between depth & DATE
In the DATE42 algo, first pass must find the primitive that write the
bad alpha value. If depth test is fail, alpha value won't be written therefore
you mustn't keep the primitive id.

In theory to ensure 100% correctness, depth would need to be fully executed
(currently depth write is disabled). However it requires to copy the depth buffer.
It is likely bad for the perf.

Issue reported on DBZInfWorld
2015-10-22 12:31:51 +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 826319ce34 gsdx-ogl: check null pointer
CID 151735 (#1 of 1): Dereference after null check (FORWARD_NULL)
61. var_deref_model: Passing null pointer rt to CopyRectConv, which dereferences it
2015-10-21 20:10:16 +02:00
Gregory Hainaut 395b4c25f3 Merge pull request #899 from ssakash/gsdx_nullcheck
gsdx: use old size of target if ds and rt is null
2015-10-18 19:25:39 +02:00
Gregory Hainaut d5e0899955 oups collision with ref commit 2015-10-18 11:19:39 +02:00
Gregory Hainaut f99882c61c gsdx-ogl: keep gl_ActiveTexture & gl_BlendColor (fix MS compilation)
It seems openGL ABI isn't exactly the same between Windows and my PC.
2015-10-18 11:18:19 +02:00
refractionpcsx2 179a4cead5 GSdx: Fix compilation 2015-10-18 02:01:56 +01:00
Akash 294b8d3c6e gsdx: use old size of target if ds and rt is null
CID 146843 (#1 of 1): Dereference after null check (FORWARD_NULL)6. var_deref_model: Passing null pointer ds to GetSize, which dereferences it.
2015-10-17 22:47:44 +05:30
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 1c8f8a00b8 Merge pull request #894 from ssakash/coverity_fix
Coverity: Prevent NULL dereferences and other stuffs.
2015-10-17 16:00:28 +02:00
Akash fedd07e4a8 gsdx: prevent a potential division by zero
CID 146834 (#2-1 of 2): Division or modulo by zero (DIVIDE_BY_ZERO)9. divide_by_zero: In expression tpf * 10000ULL / ttpf, division by expression ttpf which may be zero has undefined behavior.
2015-10-17 11:26:11 +05:30
Akash 04b765a674 gsdx: check for null deference.
CID 146839 (#1 of 1): Explicit null dereferenced (FORWARD_NULL)11. var_deref_model: Passing null pointer fb_pages to UsePages, which dereferences it.

CID 146840 (#1 of 1): Explicit null dereferenced (FORWARD_NULL)11. var_deref_model: Passing null pointer zb_pages to UsePages, which dereferences it.

* Prevent a potential null pointer deference in ```void GSRendererSW::UsePages()```
2015-10-17 09:14:07 +05:30
Gregory Hainaut 03bc304ecf gsdx-ogl: fix colclip regression when accurate blending is enabled
Fix #865
2015-10-16 22:07:50 +02:00
Jonathan Li 39dc23e83b gsdx:windows: Widen and rearrange GUI
All combobox text can now be seen in full without having to click on the
combobox.

The internal and custom resolution stuff has been moved into the Hardware
Mode Settings groupbox since it doesn't affect software mode.

The dialog has also been rearranged a bit.
2015-10-03 22:33:55 +01:00
Jonathan Li 64cccda076 gsdx:windows: Add external shader selection to GUI
This lets Windows users select the external shader and config file via the
GUI.

Also, comment out an unused variable in the Hacks dialog code.
2015-10-03 22:33:15 +01:00
Jonathan Li a57b2a059a gsdx:windows: Add file selection support
The file open dialog will be usable for all GSdx dialogs if required.
2015-09-28 12:45:14 +01:00
Jonathan Li c0137227e6 gsdx:dx: Allow selection of external shader/shader config
shaders/GSdx.fx is now the default location and is no longer hardcoded.
The external shader and external shader config can now be selected. (The
OpenGL renderer already has this feature.)

Note: It is still possible to not use a config file, just use an invalid
value for shaderfx_conf.
2015-09-28 12:45:13 +01:00
Jonathan Li df98c766e5 gsdx:dx9: Refactor shader compilation code
Don't use D3DX compile from file and compile from resource functions -
use the compile from memory function instead. It does the same thing,
except you have to set things up yourself.

Benefits:
Allows external shaders to be split into a config file and a shader file
without hardcoding the config file name.
Less code.

Yes, I more or less used the same message as the dx11 one.
2015-09-28 12:45:13 +01:00
Jonathan Li fabd6075ef gsdx:dx11: Refactor shader compilation code
Don't use D3DX compile from file and compile from resource functions -
use the compile from memory function instead. It does the same thing,
except you have to set things up yourself.

Benefits:
Easier move to D3DCompile when it becomes necessary.
Allows external shaders to be split into a config file and a shader
file without hardcoding the config file name.
Less code.
2015-09-28 12:45:12 +01:00
Gregory Hainaut c7000355fe gsdx-ogl: flush debug file before exiting the application 2015-09-28 09:41:30 +02:00
Jonathan Li cbd2417833 gsdx:ogl:windows: Fix calling convention mismatch
OpenGL does not use the cdecl calling convention (which is the default
calling convention for GSdx on Windows). Since DebugOutputToFile is used
by OpenGL, it needs to use the same calling convention that OpenGL uses.

This fixes a debug build crash when the OpenGL renderers are used and
debug_opengl is nonzero in the ini.
2015-09-26 22:38:05 +01:00
Gregory Hainaut 00e37224ed gsdx: check the return value of mkdir function
Reported by coverity
2015-09-26 13:51:23 +02:00
Gregory Hainaut 78b73ba585 gsdx: avoid null pointer deferencement 2015-09-25 20:59:36 +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 c4a3d57499 gsdx: protect fscanf string read
Coverity:
CID 146816 (#1 of 1): Calling risky function (DC.STREAM_BUFFER)
dont_call: fscanf(FILE *, char const *, ...) assumes an arbitrarily large string, so callers must use correct precision specifiers or never use fscanf(FILE *, char const *, ...)
2015-09-23 09:39:09 +02:00
Gregory Hainaut 7bec15b99f gsdx: remove useless condition check
Base pointer and format are always positive (unsigned int BTW) so drop
>= 0 comparison
2015-09-23 09:39:08 +02:00
Avi Halachmi (:avih) cee0b795ee Recording: handle cancel (at the GS[dx] dialog) gracefully
Without this patch, if a user initiates a recording and then cancels at the GSdx
dialog, the audio was recording anyway, which is probably highly unexpected.

However, while probably highly unexpected, it could still be useful to record
only audio, but with this patch it's now impossible.

We can reconsider if it turns out that people are actually using this "feature",
though one might as well set the video setting to be very unobtrusive (very low
resolution/bitrate) such that it uses very little CPU.
2015-09-22 01:11:25 +03:00
Avi Halachmi (:avih) 4474d4391b GSdx: capture - print recomended resolution and DAR to the console
This is the internal resolution which GSdx uses and recording at this resolution
is optimal, i.e. without any dumb scaling, with all relevant pixels and without
redundant pixels.

The resulting clip still doesn't have the correct aspect ratio set, but that's
just a property which can be set to the clip afterwards, which is where the DAR
becomes useful. Since it's usually anamorphic, when muxing later with the audio
use the DAR to set the playback aspect ratio.
2015-09-22 01:11:13 +03:00
Avi Halachmi (:avih) 3f81fc98dd gsdx: custom resolution - use 0 instead of 9 2015-09-22 01:00:53 +03:00
Jonathan Li 4208267966 gsdx|spu2-x:windows: Scale GUI logo with DPI
The SS_REALSIZECONTROL style resizes image to fit the control window, so
let's use that.
2015-09-21 20:45:50 +01:00
Jonathan Li c088039394 gsdx:linux: Fix clang compile
Everything seems to compile and run with clang 3.7.0 now. I don't know
if clang 3.6.x works or not. 3.5.x doesn't.
2015-09-21 20:45:50 +01:00
Jonathan Li 69d27dfb4b Merge pull request #829 from ssakash/rework_internalres
gsdx changes:
Remove native resolution checkbox from GUI and rework associated code
Small changes to Windows and Linux GUI
Support 8x native resolution
Fix custom resolution width less than native width use case
2015-09-21 20:12:47 +01:00
Gregory Hainaut d42cef891c gsdx: remove ALIGN_STACK feature on GCC
Stack is already aligned correctly. Besides GCC optimizes the variable so it doesn't
have any effect except that it generates useless warnings.
2015-09-20 22:19:45 +02:00
Gregory Hainaut 9b69afe541 gsdx-ogl: typo that broke TC offset hack 2015-09-20 22:19:45 +02:00
Gregory Hainaut b60dd9d1fe Merge pull request #814 from PCSX2/coverity-qa-high
Fix a bunches of coverity warning/errors.
2015-09-20 22:18:03 +02:00
Avi Halachmi (:avih) 94c5eab776 GSdx: capture dialog - actually remember the last used codec
Previously it was saving the display name to the config but trying to restore
according to the friendly name.

Now store and restore according to the "displayName" which is more unique than
"friendlyName" since it includes GUID[s], and handle it consistently as _bstr_t.
2015-09-20 20:04:36 +03:00
Jonathan Li d4f6894e1b gsdx: Fix custom resolution and minor cleanup
This fixes the following issues when custom resolution is selected.
 - When the width is smaller than the native resolution width, the
   texture cache targets are removed on every Vsync signal, causing a
   black screen issue.
 - The texture cache code needs a 1 returned for the custom resolution
   upscale multiplier or there'll be some really funny graphical issues.

It also removes unnecessary GetConfig (which I think unconditionally
does a a file read on Windows) calls if the width was increased - the
upscale multiplier is already stored, and the custom resolution width
and height calls are now unnecessary.

Also fix some whitespace issues.
2015-09-20 07:49:46 +05:30
Gregory Hainaut 28191baa80 gsdx-linux: merge native/upscaling/custom into a single box 2015-09-20 07:49:44 +05:30
Akash a9b0cfc519 GSDX: Add 8X native to Internal resolution. 2015-09-20 07:49:32 +05:30
Avi Halachmi (:avih) 54afd377ee GSdx: recording: Progressive: make the recorded clip play at full speed
Before this patch, when recording Progressive (frame) mode, it recorded all
the frames correctly but set the clip's fps property to 25/29.97, so when
played back it played at half the speed (but was fine when played at double speed).

This patch does not affect the number of frames recorded per second, but rather
only sets the resulting clip fps property to the correct one (double than before).

Also fixes a bug that in a non-managed window in progressive mode, the title
displayed "200%" speed when it should have displayed 100% speed.

Fixes #832
2015-09-19 14:44:48 +03:00
Akash b97018932d GSDX: Rework Internal Resolution function
upscale_multiplier function values have been changed to allocate native resolution and also move custom resolution to 9.
Remove the old native checkbox value and include Native in the combo box.
Internal GSDX functions have also been updated with this new update to the upscale_multiplier variable.
2015-09-14 10:26:27 +05:30
Miguel A. Colón Vélez 4760d71a86 Remove the remaining postbuild stuff.
The bot should work now.
2015-09-13 04:33:17 -04:00
Jonathan Li 239306e9a2 pcsx2|gsdx:linux: Fix posix_memalign
The AddressSanitizer can be used on Linux again. Well, PCSX2 doesn't get
very far when it's used though.
2015-09-12 09:58:00 +01:00
Gregory Hainaut cee0fde940 gsdx-tc: improve support of TEXA register
* Greatly reduce the number of clut read (factor 10x)
* Avoid to get wrong TEXA texture in the cache.
* Fix "jump depends on uninitialized variable" Valgrind warning.

Fix #748

I try my best to avoid any breakage of DX but please test it too.
2015-09-11 14:16:11 +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 2430abed33 gsdx: potential division by zero
CID 146833 (#2-1 of 2): Division or modulo by zero (DIVIDE_BY_ZERO)
divide_by_zero: In expression this->m_width / this->m_upscale_multiplier, division by expression this->m_upscale_multiplier which may be zero has undefined behavior.
2015-09-11 08:54:29 +02:00
Gregory Hainaut e6d1a4cccf gsdx: avoid a potential division by zero
CID 146835 (#1 of 1): Division or modulo by float zero (DIVIDE_BY_ZERO)
50. divide_by_zero: In expression (float)(end - start) / (float)frame_number, division by expression frame_number which may be zero has undefined behavior
2015-09-11 08:54:29 +02:00
Gregory Hainaut 2934a15902 gsdx: remove a duplicated check 2015-09-11 08:54:29 +02:00
Gregory Hainaut ac8f4e69d6 pcsx2|gsdx: avoid potential null deferencement 2015-09-11 08:54:29 +02:00
Miguel A. Colón Vélez 26e2b4a5be Rename Release/Debug SSE2 to Release/Debug. 2015-09-08 23:17:07 -04: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 1ae0fed83b gsdx: fix a regression due to the shader renaming 2015-09-08 16:06:15 +02:00
Gregory Hainaut 81e056e79a gsdx: always enable the boost queue
ifdef was for VS2010

GSThread.h is useless. I keep it for the transactional queue implementation
2015-09-08 14:43:09 +02:00
Gregory Hainaut 3706cfe908 gsdx: always enable CXX11 mutex feature.
ifdef was only useful for VS2010
2015-09-08 14:34:17 +02:00
Gregory Hainaut ca9b5ce11d gsdx-ogl: move depth conversion shader
Add 2 new shaders:
* ps_main12: cast a 16 bit depth to a RGB5A1 color
* ps_main16: cast a a RGB5A1 color to a 16 bit depth

Shader might be used in future commit as it seems Silent Hill uses this
kind of format.

Fix tab/indentation too
2015-09-08 12:41:05 +02:00
Gregory Hainaut 4eed4ca3a1 gsdx-debug: restore 16 bit dump format in the SW renderer
Actually dump both 32/16 bits (former for texture shuffle and later
for real 16 bits RT)
2015-09-08 12:41:05 +02:00
Jonathan Li 9052930ebc Merge pull request #791 from turtleli/gsdx-gui-changes
Add tooltips to Windows GUI. Fixes #578.
Rearrange Window GSdx GUI a bit.
Reformat tooltip descriptions to be both Linux and Windows (un)friendly.
Add new tooltip descriptions.
2015-09-03 22:49:41 +01:00
Jonathan Li e5f045c375 gsdx: Add new tooltips and descriptions.
For Linux and Windows, add tooltip descriptions for AF, AA1, extra
rendering threads, Enable Shade Boost, FX Shader/External Shader, FXAA.

For Windows, also add Alpha Correction and Logarithmic Z tooltips.

For Linux, add software mipmap tooltip.

Thanks to tsunami2311, ssakash, gregory38 and whoever did the wiki for
helping with descriptions.
2015-09-01 19:25:28 +01:00
Jonathan Li 55adc7e728 gsdx: tooltip description formatting and minor fixes
The hack description box messages were replaced by tooltips on Windows,
so there is no need for the first line in the description to refer to
the hack anymore.

3-state checkboxes were also converted to comboboxes, so remove any
references to checkbox states.

Reformat the descriptions so it looks okay on both Windows and Linux.
Could be better, but I'm out of ideas.

Also fix a few typos and missing punctuation.
2015-09-01 19:25:27 +01:00
Jonathan Li b687b106f1 gsdx: Removed unnecessary defines and functions
The changes to the Hacks dialog removes the need for these defines.

Also remove the swap_state function since it's now unused.
2015-09-01 19:25:26 +01:00
Jonathan Li c72b4d6e8a gsdx:windows: Rework hacks dialog to use tooltips
Changes the three-state checkboxes to comboboxes.
Removes the hack description box.
Hides Alpha and Alpha Stencil when OpenGL is selected.
Rearranges the hacks dialog.
2015-09-01 19:25:26 +01:00
Jonathan Li fcc8a941b0 gsdx:windows: Redo main dialog
This moves the hardware, non-renderer dependent options to the top and
makes the renderer options visible only when it affects the current
renderer.

The texture filtering checkbox has been changed to a combobox and now
uses the same description as Linux does.

Also changes the Title to GSdx Settings.
2015-09-01 19:25:25 +01:00
Jonathan Li e6b9805167 gsdx:windows: Show tooltips on main dialog 2015-09-01 19:25:25 +01:00
Jonathan Li 48bba4d581 gsdx:windows: Add tooltip support
Tooltips will be usable for all Gsdx dialogs if required.
2015-09-01 19:25:24 +01:00
Gregory Hainaut bdc8038e7e glsl: set a size to gl_ClipDistance array
The purpose is to avoid issue on MS-Intel driver without
a dedicated hack in the compilation.

Code doesn't use it so I suspect others implement to discard the
statement.
2015-08-25 18:58:39 +02:00
Gregory Hainaut a1957a685d glsl: drop an useless min in FS
GPU will clamp color anyway. It reduces the number of instruction of 25% (4->3)
2015-08-25 18:58:39 +02:00
Jonathan Li 6f6a7b92e4 gsdx:windows: Move CRC box to main dialog
The CRC hack option is always used regardless of whether the HW Hack
checkbox is ticked. Move it to the main gsdx dialog and make it use the
same descriptions that are used in Linux.

And fix the accurate_blend_unit whitespace formatting.
2015-08-23 14:04:09 +01:00
Gregory Hainaut bfadd884c9 glsl: expand tab into space
The mix of the 2 was awful
2015-08-22 13:34:02 +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 d9cf326879 gsdx: windows requires a static cast 2015-08-22 12:22:35 +02:00
Jonathan Li 6e826d5193 Merge pull request #754 from ssakash/patch-45
gsdx: little changes on AF value behavior.
2015-08-21 11:29:49 +01:00
Akash 111653833f AF checkbox status depends on paltex.
according to some of the internal functions in GSDevice files, Anisotropic Filtering is only done when paltex is disabled. do the same on the GUI for user awareness.
2015-08-21 15:50:13 +05:30
Akash 3c9ca799a6 Remove anisotropic filtering checkbox value.
Removes the checkbox of Anisotropic filtering from the GSDX plugin settings, the checkbox was usually used to enable & disable the AF which is not necessary since there is an option in the drop down list for disabling AF.
the internal function value of "AnisotropicFiltering" has been replaced with "MaxAnisotropy" for detection.
the detection uses the function getconfig("MaxAnisotropy", value)  where value 0 means disabled and value is the default value when no value is set in the INI file.
2015-08-21 09:45:00 +05:30
refractionpcsx2 60a90aa51c GSdx-dx11: Another attempt at the nvidia hack, changing the viewport top left slightly also seems to alleviate the issue. Lets see how well this goes down.
At worst things will look zoomed out by like, a pixel :P
2015-08-20 23:45:26 +01: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 53d1fdd8f1 glsl:debug: disable fst when testing texturing shader
Reduce clutter in ASM dump
2015-08-20 23:01:43 +02:00
Gregory Hainaut 78dd957717 gsdx-ogl: use normalized index coordinate for palette texture
In palette mode, 90% of texture accesses are done in 8 bits.
So let's keep this path as light as possible. It reduces GPU load.
2015-08-20 23:01:43 +02:00
Gregory Hainaut 42c08e6123 gsdx-debug: infinite replay for value > 90
Allow to use Nvidia debugger & give time to see the glitches
2015-08-20 23:01:20 +02:00
refractionpcsx2 561fa8a95e GSdx-dx: Workaround for NVidia Win10 Issues, possibly? at least seems to fix it.. 2015-08-19 23:01:39 +01: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 ed21d88735 gsdx-ogl: add support of Intel GPU on Windows
It requires at least an Ivy Bridge GPU.
2015-08-18 19:06:43 +02:00
refractionpcsx2 8539805691 Merge pull request #690 from micove/VS_universal_sln
VS Now uses a universal solutions file - VS 2012 and below dropped due to incompatibility with C++11
2015-08-18 11:40:53 +01:00
refractionpcsx2 a4f8c6d5b3 Merge pull request #770 from micove/Lintian_Fixes
Fix things found using lintian by micove. Grammatical changes only.
2015-08-18 10:19:37 +01: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
Miguel A. Colón Vélez a1de0614d7 Remove vs2012 files.
It does not support several things from C99/C++11 that are
used in the project.
2015-08-18 01:15:51 -04:00
Miguel A. Colón Vélez f22bc63fee Disable 8,000+ warnings.
Someone can try renaming v,a,b,m,t but since they are
shadowed one mistakes can mess too much hence the warning.
2015-08-18 00:45:14 -04:00
Miguel A. Colón Vélez 277217353e Rename files. 2015-08-18 00:44:35 -04:00
Miguel A. Colón Vélez 1fe5aceded Enable round-tripping.
- Remove ToolsVersion
- Use $(DefaultPlatformToolset)_xp until XP support is dropped.
Note: opencl had no XP support and was not enabled in VS2012.
2015-08-18 00:44:19 -04:00
Miguel A. Colón Vélez f52988b93c Run devenv /upgrade
This ensures the solution can do round-tripping.
2015-08-18 00:44:02 -04:00