Commit Graph

2239 Commits

Author SHA1 Message Date
Gregory Hainaut e9e1b33884 gsdx: log a nice string instead of the hex format of PSM 2016-08-03 18:07:54 +02:00
Gregory Hainaut 41bede60eb gsdx replayer: fix broken init in replayer
"regression" from previous defered init
2016-08-03 11:57:56 +02:00
Gregory Hainaut 27f313ee16 gsdx hw: limit OI_GsMemClear to large clear
Help to reduce the speed impact
2016-08-03 11:23:23 +02:00
Jonathan Li f978f9a07d Merge pull request #1477 from turtleli/gsdx-defer-init
gsdx: Avoid illegal instruction crash on older CPUs
2016-08-02 23:00:19 +01:00
Gregory Hainaut 16affc9ef4 gsdx tc: potentially fix a regression
Update done on f712c5c6d0

Previous code use the size of the draw to compute latest block. I
don't know why I use .x/.y which are the origin offset so the start of the block.
2016-08-02 15:35:28 +02:00
Jonathan Li 44f90efb93 gsdx:psx: Fix illegal instruction crash on old CPUs
Check the instruction set first in GPUinit, GPUconfigure and GPUtext
to prevent unsupported vector instructions from being executed.

Move the vector initialisation in GPUinit to a separate function - it
avoids a vzeroupper instruction.
2016-08-01 19:38:23 +01:00
Gregory Hainaut 92ae8a5be7 gsdx sw: print current draw call of GetSizeFixedTEX0
To easily detect compare with hardware renderer
2016-07-31 13:19:38 +02:00
Gregory Hainaut 1ea83ba3a7 gsdx debug: log current area of the draw
This way it is easier to see which part of the texture is read, and which part
of the framebuffer is updated
2016-07-31 13:19:38 +02:00
Adam Diffin 6376e8d6e7 Just a simple grammar fix. (#1489) 2016-07-31 01:23:35 +01:00
Gregory Hainaut 140fe74ca2 gsdx ogl: fix bad blending regression
(when accurate blending is disabled)

Regression was introduced in 29c97a9bf2 (11th June)
2016-07-30 09:59:53 +02:00
Gregory Hainaut 242ac26299 Merge pull request #1485 from ssakash/HPO_Custom
GSDX-TextureCache: Port Half pixel offset hack for custom resolutions
2016-07-29 15:07:02 +02:00
FlatOutPS2 02b0451d3c GSdx: Star Ocean 3 depth issue fix
Fixes issue #1475
2016-07-29 12:13:26 +02:00
FlatOutPS2 91e07727e3 GSdx Add missing CRC hacks 2016-07-29 12:12:52 +02:00
Akash dbad57b8e8 GSDX: Silence an implicit conversion warning
OMSetBlendState() doesn't accept passing a float value as it's argument
(AKA actual parameter).
2016-07-28 18:58:06 +05:30
Akash 47f69f694a GSDX-TextureCache: Port Half pixel offset hack for custom resolutions 2016-07-28 18:45:23 +05:30
Gregory Hainaut 620876e0e7 gsdx: fix compilation error with ICC
just require the -restrict compilation flag
2016-07-28 11:01:28 +02:00
Jonathan Li a9f9c1406c Merge pull request #1474 from turtleli/windows-64-bit-fixes
Windows 64-bit compile fixes
2016-07-28 00:19:04 +01:00
Jonathan Li 7e30d16797 gsdx: Use char array instead of string for name
"static string str;" causes a SIGILL signal on a "Nehalem" (SSE4.2)
QEMU VM when compiled with GCC 6.1.1.
2016-07-27 23:34:16 +01:00
Jonathan Li 46ba9aa117 gsdx: Defer GSdxApp initialisation on Linux only
vector push_back causes a SIGILL signal on a Nehalem (SSE4.2) QEMU VM
when compiled with GCC 6.1.1.

However, an empty constructor causes illegal instruction exceptions to be
generated on a Windows VM.

So here's an inbetween that looks stupid but works on what I've tested.
2016-07-27 23:34:15 +01:00
Jonathan Li 9f53987e3b gsdx: Use map for GSCRC::m_map
Visual Studio 2015 initialises unordered_map using vector instructions,
which can cause PCSX2 to crash if the instructions aren't supported.
2016-07-27 23:34:14 +01:00
Jonathan Li e5ea4cc5d4 gsdx: Defer vector initialisation to GS/GPUinit
It can cause PCSX2 to crash if the instructions aren't supported.
2016-07-27 23:34:14 +01:00
Jonathan Li d726d4d4aa gsdx: Add AVX2 to instruction set test
Also add a newline to the error message and report AVX/AVX2 instead of
SSE5.00 and SSE5.01.
2016-07-27 23:34:12 +01:00
Gregory Hainaut 7fa55c39f1 Merge pull request #1479 from ssakash/custom_fixes
GSDX-TextureCache: Add proper rounding when unscaling texture size
2016-07-27 22:31:21 +02:00
Gregory Hainaut d6383e6c21 Merge pull request #1472 from PCSX2/gsdx-gta-depth-issue-1457
Gsdx gta depth issue 1457
2016-07-26 18:40:53 +02:00
Akash d3ebd4b318 GSDX-TextureCache: Add proper rounding when unscaling texture size
Fixes flickering issues on Dragon Ball Z Budokai Tenkaichi FMV's on custom resolution, might also help prevent some crashes on custom resolution.
2016-07-26 18:28:07 +05:30
ramapcsx2 c592ccb3e5 Merge pull request #1435 from ssakash/Custom_TextureCache
GSDX: Improve scaling of custom resolution
2016-07-26 14:07:19 +02:00
Jonathan Li 5719bddbb5 gsdx:windows: Change m_colorspace to INT_PTR
Fixes a 64-bit compile error.
2016-07-23 02:19:28 +01:00
Gregory Hainaut aea75f51bd gsdx tc: partial support of pseudo depth for Dx
Fix #1457 (GTA)

The game uses a depth format for a pure color buffer (cokes do ravage
in gaming industry)

However I'm really afraid that it migth break another effect in other games.
2016-07-22 20:38:46 +02:00
Gregory Hainaut 7d35e15fea Merge pull request #1444 from PCSX2/atomic-relax
Atomic relax
2016-07-22 18:36:02 +02:00
Gregory Hainaut 9182a287e2 Merge pull request #1469 from PCSX2/valgrind-memleak
Valgrind memleak
2016-07-22 18:17:37 +02:00
Gregory Hainaut 1e3c46a6bb gsdx ogl: purge debug message in destructor
Allow to see latest error and avoid noise in Valgrind log
2016-07-21 09:51:16 +02:00
Gregory Hainaut b6a55f50ab gsdx ogl: fully initialise PSConstantBuffer structure 2016-07-21 09:51:16 +02:00
Jonathan Li e25e8bc580 plugins: Tidy/standardise VS projects
Combine all the different configurations together so the project files
are more generic and maintainable.

Also standardise the layout so all the project files will be similar and
all have the same standard elements (even if empty).

Add 64-bit configurations.

Additional specifics:
spu2-x: FLOAT_SAMPLES preprocessor definition removed since it's unused.
2016-07-19 23:25:12 +01:00
Gregory Hainaut 25bc2dff07 gsdx: dump and log EE texture read
It gives a visual opportunity to detect a bad read of the texture cache
2016-07-14 19:45:06 +02:00
Gregory Hainaut f76bf9dddc gsdx: dump and log EE texture read
It gives a visual opportunity to detect a bad read of the texture cache
2016-07-14 19:41:21 +02:00
Gregory Hainaut 086dfc8a14 gsdx sw: use acquire/release semantics for atomic operation
* Avoid the generation of memory barrier (mfence)
2016-07-14 18:29:41 +02:00
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