Commit Graph

149 Commits

Author SHA1 Message Date
gregory.hainaut e80b002929 gsdx ogl: Flush various pending work
* try to use more subroutine on VS&PS, unfortunately hit a driver crash!
* Call Attach/DetachContext through GSDevice so I can unmap currently mapped buffer
* Implement glsl part of GL_ARB_bindless texture, again hit another driver crash!
* various fix of GL_ARB_buffer_storage. Basic benchmark show only improvement on 'cold' case, I guess it will improve smoothness
* try to fix GL_clear_texture, no success so far. It seem the extension is limited to basic texture (aka no depth/stencil)



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5752 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-10-24 20:54:27 +00:00
gregory.hainaut e01c6cd9ce gsdx ogl: the proof of concept commit
* GL_ARB_shader_subroutine for perf
fix for nvidia => add missing shader declaration. Nvidia got +4fps on colin3 :) 

For the moment only 2 PS parameters are supported. Code need to be extended to support others games that often
switch shader program (like xenosaga).
require GL4 class hardware and the option override_GL_ARB_shader_subroutine = 1
Note: strangely on AMD linux it is slower!

* GL_ARB_shader_image_load_store for accuraccy (Date)
Use a signed integer texture and reenable color buffer writing

Current status: Amagami_transparency.gs & P3_battle_shadows.gs are now working on Nvidia with a small perf impact.
Current implementation detail:
1/ setup the standard stencil as before
2/ on remaining pixel, draw once to compute first primitive that will write a fail alpha value.
3/ final draw based on primitive id of step 2

Note: I think we would get a bad behavior if depth test&mask are enabled on step 2/3
Note2: on my limited testcase the perf impact was on CPU. It would be possible to merge step1&2 to nullifying it (could 
even be faster actually), however it would require more GPU power.

Again require GL4 class hardware. And the option UserHacks_DateGL4 = 1



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5725 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-08-28 08:44:16 +00:00
gregory.hainaut e394de86dc gsdx ogl:
* add a non-working hack: UserHacks_DateGL4, goal was to replace UserHacks_AlphaStencil
 + Detection of good/bad samples is based on primitive ID variable. However I'm not sure
 the behavior is always the same between draw call...Anyway let's keep a copy of the current
 work
* Dump integer texture into text csv
* add gl4.2 ARB_shader_image_load_store extension (needed by UserHacks_DateGL4)


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5707 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-07-28 14:40:43 +00:00
gregory.hainaut d3e1e4da0d gsdx ogl:
* allow to switch renderer with F9
* skip first frame in stat of the replayer
* drop msaa. Fxaa and internal resolution will do the job
* move texture attachment from texture object into device object (allow to keep sanely the state)
* split the write buffer and attachment setup
* completely split sampler and texture input setup
* redo GSDeviceOGL::CopyOffscreen to avoid an extra copy.



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5704 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-07-19 19:25:50 +00:00
gregory.hainaut 916a091f8a gsdx ogl: GLes
* use gles header file, disable opengl code (mainly GLX, ARB_sso, geometry shader)
* Define properly the function pointer, GLES use basic linking whereas GL must get the symbol dynamically
* cmake: properly search and set libglesv2.so
* don't use dual source blending => HW renderer work (only miss unimportant FBA)



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5701 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-07-13 11:39:45 +00:00
gregory.hainaut 91d39de645 gsdx ogl: fix crash when pause/resume with EGL (opensource driver)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5690 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-30 15:27:50 +00:00
gregory.hainaut 58cacc3b1c gsdx: use size_t for loop index when it used countof macro
* fix override_GL_ARB_copy_image typo


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5687 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-29 12:02:03 +00:00
gregory.hainaut 3c7167be50 clean (some) gdb warning: round 1
* use svnrev.h on linux too
* replace sprintf_s with snprintf (hope it still compile on Windows)
* init integer with 0 instead of NULL
* various int -> u32/uint32/uint on for loop index
* remove a couple of unused variable
* init few variable
* disable unused warning results


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5683 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-28 10:43:50 +00:00
gregory.hainaut ca1edbf2cb gsdx ogl:
* Separate state and shader compilation into separate function
* replace various hash_map by basic array
* Compact VertexScale and offset into a single vec4
* add the new option "ogl_vertex_subdata": subdata is faster on FGLRX, test are welcome on Nvidia drivers
    0 => use map/unmap
    1 => use subdata

replay: add "linux_replay" option and compute some nice stat (mean, standard deviation)

cmake: recreate shader header at build time


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5682 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-26 20:09:07 +00:00
gregory.hainaut f4ce6d6fce gsdx:
* don't delete the wnd in GSclose. It can still be used later
* Properly detect the GL_ARB_gpu_shader5 extension for Fxaa
* A couple of fix in Create (GSopen1) of GSWndEGL/GSWndOGL


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5674 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-16 16:33:08 +00:00
gregory.hainaut b7a6dd93b3 i18n: refresh string translation
GSdx: nothing to see :p


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5673 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-16 09:55:37 +00:00
gregory.hainaut f4b173bbd1 gsdx: miss a part of the previous patch...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5672 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-16 09:43:34 +00:00
gregory.hainaut 09571dac0b gsdx:
* add exception in GSWndEGL and GSWndOGL 
* Try to use EGL when GLX failed => you don't need any flags for the opensource driver ;)

cmake: don't install anymore the glsl shader


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5671 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-16 09:40:38 +00:00
gregory.hainaut b10d554764 gsdx (ogl):
* fix memory leak of m_wnd
* don't escape % in the shader string
* Fix shadeboost StretchRect parameter

debian: compress package with xz


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5669 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-16 07:05:57 +00:00
gregory.hainaut 91e74637d5 gsdx-ogl-wnd:
* update linux dialog: create a custom shader box and put it Shade boost and Fxaa
* force the reloading of the inifile after any configuration update.


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5666 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-15 15:03:44 +00:00
gregory.hainaut f8242bd458 gsdx-ogl_wnd: Merging r5633 through r5661
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5662 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-15 09:05:02 +00:00
gabest11@gmail.com 43c7235cc3 GSdx: Added a vector class for AVX2 and upgraded a few functions to use it, still a lot to do. New project config AVX2, _M_SSE = 0x501, only use it if you have haswell. Might break GCC or older MSVC, please test it.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5652 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-10 15:56:11 +00:00
gregory.hainaut 58699923e0 gsdx-ogl-wnd:
* factorize sample object creation
* remember frame buffer attachment state
* Use a basic context on EGL. Allow to use Mesa 9.1 on AMD GPU.
* precompile vertex and geometry shader to avoid benchmark polution on replay
* Try harder to detect FGLRX driver on window
* various clean

Remain to fix the coordinate system for upscaling



git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5651 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-06-09 16:41:58 +00:00
gregory.hainaut 36f8dda3fe gsdx-ogl-wnd:
* implement GSWndEGL copy/pasted from zzogl.
* remove linux debugging shader that failed to compile on window
* add additional debug message during context creation


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5520 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-01-17 16:58:48 +00:00
gregory.hainaut 58cc2ddd1f gsdx-ogl-wnd:
* Remove bad redefinition of glActiveTexture and glBlendColor pointer
* Remove glew dependency on linux
* s/OGL_DEBUG/ENABLE_OGL_DEBUG/ and enable it on debug


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5512 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-01-16 18:25:53 +00:00
gregory.hainaut fb9c4e5a61 gsdx-ogl-wnd:
* add a new config define ENABLE_OGL_MT_HACK to replace the define OGL_MT_HACK


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5511 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-01-14 09:25:16 +00:00
gregory.hainaut b65ad2c3e5 gsdx-ogl-wnd:
* move GL loading function into its own namespace
* Use manual GL loading on linux too and mostly drop glew dependency. (Not 100% clean we are still depends on some glew define, it will be fixed later)

Note: shaders still need to be copied manually from GSdx/res to bin/plugins


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5510 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-01-14 09:15:39 +00:00
gregory.hainaut f9ddd639b8 gsdx-ogl-wnd: Try to compile OGL backend on VS
* Update project files
* basic compilation fix: include stdafx, s/uint/uint32/
* add selection of the opengl renderer/device in gsopen

Remain to fix opengl function declaration/initialization


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5505 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-01-10 13:13:59 +00:00
gregory.hainaut 5e4bae5f5d gsdx-ogl-wnd: * add a preliminary context and wgl management
Note: don't expect to compile/work yet


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5502 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-01-04 21:33:24 +00:00
gregory.hainaut 4fb7474e9c gsdx-ogl-wnd: multiple VS compilation fix.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5500 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-01-04 15:41:37 +00:00
gregory.hainaut f95d9bd989 gsdx-ogl-wnd:
* split GSwnd into GSWndOGL  and GSWndDX
* replace GSwnd static object by a dynamic pointer


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl-wnd@5498 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-01-04 11:41:51 +00:00
gregory.hainaut e06484adb8 gsdx: update the copyrigh address thank to sed
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5412 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-09-09 18:16:11 +00:00
gregory.hainaut e650a1d8a0 GSdx ogl: Fix a nasty crash because of the multithread hack.
canditate for 1.0 branch


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5381 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-08-19 13:06:40 +00:00
gregory.hainaut 226b2d63b8 gsdx: remove completely the SDL backend. Let's hope I didn't break too much VS
cmake: take the opportunity to drop the support of 3rdparty compilation. Distributions have got a more recent version of zlib/soundtouch anyway.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5376 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-08-15 10:22:19 +00:00
sudonim1@gmail.com cd05504851 GSDX: Simplified and improved (for my purposes) the D3D11 checks a little. Necessary for something I'm working on, hopefully doesn't break GSDX for anyone (this code took a lot of revisions initially as I recall).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5357 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-08-06 01:56:25 +00:00
avihal ae9c7791c2 GSdx: Disable CRC hacks - cleanups:
- Removed the #define DISABLE_CRC_HACKS (since it's at the GUI now).
- reverted r5315 and r5319 (which prevented gs dumps to have a correct CRC).
- Restored the functionality of these revisions via simple skip of the other hack calls.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5320 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-20 18:51:30 +00:00
ramapcsx2 48284746d6 GSdx: Better CRC disable value, using -2.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5318 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-20 13:23:35 +00:00
ramapcsx2 ef0377b0e9 GSdx: Fully disable CRC based hacks when the option is set (by setting the CRC to 0). Some GSRendererHW::OI_* functions were still active before.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5315 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-19 16:10:24 +00:00
gregory.hainaut b8b451340c zzogl: use the EXT version of fbo (fix the build on windows)
gsdx:
* add some parenthesis to shup up very verbose gcc warning
* adapt ogl to latest sudonim change


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5290 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-13 10:43:04 +00:00
gregory.hainaut 3b22f0fb0c zzogl glsl4:
* properly delete program and vertex array. Avoid a crash on plugin reload
* reset shader state. Avoid to reuse invalid data on plugin reload
gsdx:
* add an hack to unattach/attach the gl context from different thread. Help to solve some crashes. The best will be to move gpu operation out of gsreadfifo but it would need more works
* implement logz for test purpose (don't seem to help)
gsdx replay:
* use default xdg location


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5289 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-12 18:14:01 +00:00
sudonim1@gmail.com 08d8287d3e GSDX: Added some exceptions on shader compilation failure (with handlers in entry points because people seem to like the plugin struggling on even when nothing works any more) because I am not keen crashing Windows via my graphics driver.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5284 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-06-11 02:31:44 +00:00
gregory.hainaut f47168568b gsdx linux: uses OGL device by default instead of GSnull. Issue arise when renderer is 0 -> device is GSnull but GSRenderer is ogl
debian: fix some typo


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5213 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-05-17 14:18:37 +00:00
gregory.hainaut 7cdb9fc2f2 gsdx: fix some Visual Studio build error of the previous merge.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5187 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-28 17:58:45 +00:00
gregory.hainaut 46838ca4ee gsdx: merge the opengl branch to ease futur development and allow GSdx by default on linux
* for the moment only the SW render is supported, hopefully HW will come some day. And linux only for the moment.
* Require an OpenGL3 GPU (==Dx10) ie Nvidia >= 8800, AMD >= HD2000)
* Require an OpenGL4.2 compatible drivers => no opensource driver supported neither Intel driver.
* Build by default without SDL support which will dropped later. You need to add this define "ENABLE_SDL_DEV" on Win.



git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5186 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-28 15:24:02 +00:00
gregory.hainaut f303da1c45 gsdx-ogl: fix potential build failure on MS
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5185 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-28 09:39:23 +00:00
gregory.hainaut 300ea42977 gsdx-ogl: sync from trunk 5179:5091
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5180 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-26 19:51:07 +00:00
avihal 4ef1ee3754 GSdx: F9 is now switching better between HW and SW renderer.
Previously: GSdx was switching between the configured renderer and the best SW renderer (best = DX11 if supported).
Now: If using DX: Switch SW/HW renderer and use the same DX version. If using SDL: same as before.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5164 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-04-19 19:10:24 +00:00
gregory.hainaut 16a1fded96 gsdx-ogl: LINUX ONLY
* Keep the state of the draw buffer (save few opengl call)
* AMD fix the shader unloading (12.2 and above). So disable the workaround


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5137 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-03-30 19:02:37 +00:00
gregory.hainaut 92f2ab38ae GSdx-ogl: LINUX only
* Use the new map interface/separate texture coordinate inside shader
* support new format on texture

Note: it is quite instable with various crashes and GL error but at least it compiles now :p 


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5094 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-11 10:22:02 +00:00
gregory.hainaut 4a00648d9f GSdx-ogl: LINUX only. sync from trunk (5068:5090)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5091 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-09 21:40:39 +00:00
gregory.hainaut 6680d285ea gsdx-ogl: linux only
* implement some missing shader for DATE, invert coordinate like strech rectangle
* Use glCopyImageSubDataNV nvidia extension to copy image (you need latest AMD drivers)


git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5086 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-31 17:08:05 +00:00
gabest11 915a57d9f3 GSdx: more fun with shaders but nothing works yet.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5083 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-27 11:56:49 +00:00
gabest11 9aabcc1701 GSdx: added a shortcut in GSState::Transfer for the most frequent vertex format I found (helps quite a lot), less thread-syncing for the sw renderer, and the bios boot logo was fixed (just had to clear the memory on reset).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5072 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-18 11:47:31 +00:00
gregory.hainaut 0ad5982364 gsdx-ogl: linux only (merge from trunk 5022:5068)
git-svn-id: http://pcsx2.googlecode.com/svn/branches/gsdx-ogl@5069 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-15 14:51:49 +00:00
gabest11 da4ea83134 GSdx: nothing really new, just testing the compute shader, if you are an expert take a look and tell me your opinion :P
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5068 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-01-13 18:10:05 +00:00