Commit Graph

2200 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 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 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
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
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