You are not logged in.

#1 2016-05-08 12:10:06

Soukyuu
Member
Registered: 2014-04-08
Posts: 854

PCSX2 + nVidia blob + gdsx HW abysmal performance

I've installed the pcsx2 package from the repos and am attempting to use gdsx as a renderer, but hardware mode fails with:

glX-Version 1.4 with Direct Rendering
Failed to find glCreateTextures
Failed to find glTextureStorage2D
Failed to find glTextureSubImage2D
Failed to find glCopyTextureSubImage2D
Failed to find glBindTextureUnit
Failed to find glGetTextureImage
Failed to find glTextureParameteri
Failed to find glCreateFramebuffers
Failed to find glClearNamedFramebufferfv
Failed to find glClearNamedFramebufferuiv
Failed to find glClearNamedFramebufferiv
Failed to find glNamedFramebufferTexture
Failed to find glNamedFramebufferDrawBuffers
Failed to find glNamedFramebufferReadBuffer
Failed to find glCheckNamedFramebufferStatus
Failed to find glCreateBuffers
Failed to find glNamedBufferStorage
Failed to find glNamedBufferData
Failed to find glNamedBufferSubData
Failed to find glMapNamedBuffer
Failed to find glMapNamedBufferRange
Failed to find glUnmapNamedBuffer
Failed to find glFlushMappedNamedBufferRange
Failed to find glCreateSamplers
Failed to find glCreateProgramPipelines
Failed to find glClipControl
Failed to find glTextureBarrier
DSA is not supported. Replacing the GL function pointer to emulate it
DSA is not supported. Replacing the GL function pointer to emulate it
Error GL_ARB_texture_barrier is not supported by your driver. You can't emulate correctly the GS blending unit! Sorry!
Error GL_ARB_texture_barrier is not supported by your driver. You can't emulate correctly the GS blending unit! Sorry!

It does render, but about only at about 1 fps. zzogl renderer works, but has rendering issues, so I wanted to try out gdsx. libgl-32 and glew-32 are installed. Sound is disabled to ensure it's not lagging because of soundsync.
Any idea what might be missing? The system is the 260GTX one in my signature.

Last edited by Soukyuu (2016-05-16 20:15:12)


[ Arch x86_64 | linux | Framework 13 | AMD Ryzen™ 5 7640U | 32GB RAM | KDE Plasma Wayland ]

Offline

#2 2016-05-08 12:55:44

Lone_Wolf
Member
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 11,911

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

Most of those extensions it searches for are OpenGL4 .
These specs from nvidia only mention OpenGL 2.1 support.

please post output of glxinfo |grep -i OpenGL so we van verify what capabilities your card reports.

(ifyou need to install it , glxinfo is in mesa-demos package)

Last edited by Lone_Wolf (2016-05-08 12:55:59)


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.


(A works at time B)  && (time C > time B ) ≠  (A works at time C)

Offline

#3 2016-05-08 14:13:20

Soukyuu
Member
Registered: 2014-04-08
Posts: 854

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

It's not recent enough to have openGL 4.0

OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 260/PCIe/SSE2
OpenGL core profile version string: 3.3.0 NVIDIA 340.96
OpenGL core profile shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.3.0 NVIDIA 340.96
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 NVIDIA 340.96 340.96
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.00
OpenGL ES profile extensions:

[ Arch x86_64 | linux | Framework 13 | AMD Ryzen™ 5 7640U | 32GB RAM | KDE Plasma Wayland ]

Offline

#4 2016-05-08 14:46:40

Gusar
Member
Registered: 2009-08-25
Posts: 3,605

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

Would be nice to know if strictly OpenGL 3.3 is available or if there's 4+ stuff as well. The only way I know how to check that is going through the full extensions list shown by glxinfo and comparing it with https://mesamatrix.net. And just checking, you said you have libgl-32, does that mean lib32-nvidia-340xx-utils and lib32-nvidia-340xx-libgl? If yes, there could be a GSdx setting the GPU doesn't like and configuring GSdx differently would bring better results, so you'd need to experiment.

You could also try the open source driver. That mesamatrix page shows what's available if you use that. Your GPU is nv50 and as you can see, lots of 4+ is available, I think it's enough for GSdx to work. Performance will be a problem though, if power management (going into a higher performance level) is not available, and it very likely isn't for your GPU.

Offline

#5 2016-05-08 16:57:19

Soukyuu
Member
Registered: 2014-04-08
Posts: 854

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

Yes:

$ pacman -Qs libgl
local/lib32-mesa 11.2.1-1
    an open-source implementation of the OpenGL specification (32-bit)
local/lib32-nvidia-340xx-libgl 340.96-1
    NVIDIA drivers libraries symlinks (32-bit)
local/libglade 2.6.4-5
    Allows you to load glade interface files in a program at runtime
local/mesa 11.2.1-1
    an open-source implementation of the OpenGL specification
local/nvidia-340xx-libgl 340.96-1
    NVIDIA drivers libraries symlinks
$ pacman -Qs lib32-nvidia-340xx-utils
local/lib32-nvidia-340xx-utils 340.96-1
    NVIDIA drivers utilities (32-bit)

nouveau is really not an option. I once had power management activated on my card following the devs' instructions on irc (pushing and popping stuff to and from registers directly - scaaary), but even with full performance it was much slower than the blob.


[ Arch x86_64 | linux | Framework 13 | AMD Ryzen™ 5 7640U | 32GB RAM | KDE Plasma Wayland ]

Offline

#6 2016-05-09 12:15:24

Lone_Wolf
Member
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 11,911

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

Have you tried OpenGL softwaremode ?


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.


(A works at time B)  && (time C > time B ) ≠  (A works at time C)

Offline

#7 2016-05-09 15:09:59

Soukyuu
Member
Registered: 2014-04-08
Posts: 854

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

Yes, it's about as slow as zzogl. That's why I wanted to use the more performant hardware mode. I guess my card doesn't support enough openGL for it to work?


[ Arch x86_64 | linux | Framework 13 | AMD Ryzen™ 5 7640U | 32GB RAM | KDE Plasma Wayland ]

Offline

#8 2016-05-09 15:28:09

Gusar
Member
Registered: 2009-08-25
Posts: 3,605

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

It's not about OpenGL features, most of the 4+ stuff is optional. Like I said, experiment with GSdx settings. Stuff like "accurate blending" is very resource intensive, if that's on by default, turn it off. Also play with all the other settings.

Offline

#9 2016-05-09 15:48:53

Soukyuu
Member
Registered: 2014-04-08
Posts: 854

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

It is about openGL features, see here: https://github.com/pcsx2/pcsx2/issues/1347

There is a legacy branch, to be activated with -DGSDX_LEGACY=ON, which falls back to openGL 3.3.0
The package in the repos is compiled without it, obviously.

I have synched the PKGBUILD from ABS, but it fails building with a metric ton of errors:

In file included from /usr/include/wx-3.0/wx/defs.h:689:0,
                 from /usr/include/wx-3.0/wx/string.h:24,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/include/stddef.h:436:27: error: typedef ‘decltype’ is initialized (use decltype instead)
   typedef decltype(nullptr) nullptr_t;
                           ^
/usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/include/stddef.h:436:20: error: ‘nullptr’ was not declared in this scope
   typedef decltype(nullptr) nullptr_t;
                    ^
In file included from /usr/include/c++/5.3.0/string:38:0,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/5.3.0/x86_64-unknown-linux-gnu/32/bits/c++config.h:200:27: error: typedef ‘std::decltype’ is initialized (use decltype instead)
   typedef decltype(nullptr) nullptr_t;
                           ^
/usr/include/c++/5.3.0/x86_64-unknown-linux-gnu/32/bits/c++config.h:200:20: error: ‘nullptr’ was not declared in this scope
   typedef decltype(nullptr) nullptr_t;
                    ^
In file included from /usr/include/c++/5.3.0/string:39:0,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/5.3.0/bits/stringfwd.h:63:33: error: ‘char16_t’ was not declared in this scope
   template<> struct char_traits<char16_t>;
                                 ^
/usr/include/c++/5.3.0/bits/stringfwd.h:63:41: error: template argument 1 is invalid
   template<> struct char_traits<char16_t>;
                                         ^
/usr/include/c++/5.3.0/bits/stringfwd.h:64:33: error: ‘char32_t’ was not declared in this scope
   template<> struct char_traits<char32_t>;
                                 ^
/usr/include/c++/5.3.0/bits/stringfwd.h:64:41: error: template argument 1 is invalid
   template<> struct char_traits<char32_t>;
                                         ^
/usr/include/c++/5.3.0/bits/stringfwd.h:84:24: error: ‘char16_t’ was not declared in this scope
   typedef basic_string<char16_t> u16string; 
                        ^
/usr/include/c++/5.3.0/bits/stringfwd.h:84:32: error: template argument 1 is invalid
   typedef basic_string<char16_t> u16string; 
                                ^
/usr/include/c++/5.3.0/bits/stringfwd.h:84:32: error: template argument 2 is invalid
/usr/include/c++/5.3.0/bits/stringfwd.h:84:32: error: template argument 3 is invalid
/usr/include/c++/5.3.0/bits/stringfwd.h:87:24: error: ‘char32_t’ was not declared in this scope
   typedef basic_string<char32_t> u32string; 
                        ^
/usr/include/c++/5.3.0/bits/stringfwd.h:87:32: error: template argument 1 is invalid
   typedef basic_string<char32_t> u32string; 
                                ^
/usr/include/c++/5.3.0/bits/stringfwd.h:87:32: error: template argument 2 is invalid
/usr/include/c++/5.3.0/bits/stringfwd.h:87:32: error: template argument 3 is invalid
In file included from /usr/include/c++/5.3.0/bits/stl_algobase.h:61:0,
                 from /usr/include/c++/5.3.0/bits/char_traits.h:39,
                 from /usr/include/c++/5.3.0/string:40,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/5.3.0/bits/cpp_type_traits.h:185:25: error: ‘char16_t’ was not declared in this scope
     struct __is_integer<char16_t>
                         ^
/usr/include/c++/5.3.0/bits/cpp_type_traits.h:185:33: error: template argument 1 is invalid
     struct __is_integer<char16_t>
                                 ^
/usr/include/c++/5.3.0/bits/cpp_type_traits.h:192:25: error: ‘char32_t’ was not declared in this scope
     struct __is_integer<char32_t>
                         ^
/usr/include/c++/5.3.0/bits/cpp_type_traits.h:192:33: error: template argument 1 is invalid
     struct __is_integer<char32_t>
                                 ^
In file included from /usr/include/c++/5.3.0/bits/stl_algobase.h:62:0,
                 from /usr/include/c++/5.3.0/bits/char_traits.h:39,
                 from /usr/include/c++/5.3.0/string:40,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/5.3.0/ext/type_traits.h:160:35: error: ‘__gnu_cxx::__is_null_pointer’ declared as an ‘inline’ variable
   __is_null_pointer(std::nullptr_t)
                                   ^
/usr/include/c++/5.3.0/ext/type_traits.h:160:35: error: ‘bool __gnu_cxx::__is_null_pointer’ redeclared as different kind of symbol
/usr/include/c++/5.3.0/ext/type_traits.h:155:5: note: previous declaration ‘template<class _Type> bool __gnu_cxx::__is_null_pointer(_Type)’
     __is_null_pointer(_Type)
     ^
/usr/include/c++/5.3.0/ext/type_traits.h:160:21: error: ‘nullptr_t’ is not a member of ‘std’
   __is_null_pointer(std::nullptr_t)
                     ^
In file included from /usr/include/c++/5.3.0/bits/stl_pair.h:59:0,
                 from /usr/include/c++/5.3.0/bits/stl_algobase.h:64,
                 from /usr/include/c++/5.3.0/bits/char_traits.h:39,
                 from /usr/include/c++/5.3.0/string:40,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/5.3.0/bits/move.h:47:27: error: expected initializer before ‘noexcept’
     __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
                           ^
In file included from /usr/include/c++/5.3.0/bits/move.h:57:0,
                 from /usr/include/c++/5.3.0/bits/stl_pair.h:59,
                 from /usr/include/c++/5.3.0/bits/stl_algobase.h:64,
                 from /usr/include/c++/5.3.0/bits/char_traits.h:39,
                 from /usr/include/c++/5.3.0/string:40,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/5.3.0/type_traits:71:14: error: ‘constexpr’ does not name a type
       static constexpr _Tp                  value = __v;
              ^
/usr/include/c++/5.3.0/type_traits:71:14: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11
/usr/include/c++/5.3.0/type_traits:74:7: error: ‘constexpr’ does not name a type
       constexpr operator value_type() const { return value; }
       ^
/usr/include/c++/5.3.0/type_traits:74:7: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11
/usr/include/c++/5.3.0/type_traits:84:5: error: ‘constexpr’ does not name a type
     constexpr _Tp integral_constant<_Tp, __v>::value;
     ^
/usr/include/c++/5.3.0/type_traits:84:5: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11
/usr/include/c++/5.3.0/type_traits:93:5: error: expected unqualified-id before ‘using’
     using __bool_constant = integral_constant<bool, __v>;
     ^
/usr/include/c++/5.3.0/type_traits:120:65: error: ‘>>’ should be ‘> >’ within a nested template argument list
     : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type
                                                                 ^
/usr/include/c++/5.3.0/type_traits:209:33: error: ‘char16_t’ was not declared in this scope
     struct __is_integral_helper<char16_t>
                                 ^
/usr/include/c++/5.3.0/type_traits:209:41: error: template argument 1 is invalid
     struct __is_integral_helper<char16_t>
                                         ^
/usr/include/c++/5.3.0/type_traits:213:33: error: ‘char32_t’ was not declared in this scope
     struct __is_integral_helper<char32_t>

etc etc etc for about 10k lines. I thought the ABS PKGBUILDs were supposed to be buildable? Am I missing something?

edit: after updating (there seems to have been a gcc update) I'm getting an error even earlier in the build process now:

Scanning dependencies of target GSdx-1.0.0
[ 14%] Building CXX object plugins/FWnull/CMakeFiles/FWnull-0.7.0.dir/FW.cpp.o
[ 14%] Linking CXX shared module libFWnull-0.7.0.so
[ 15%] Building CXX object plugins/GSnull/CMakeFiles/GSnull.dir/GifTransfer.cpp.o
[ 15%] Building CXX object common/src/Utilities/CMakeFiles/Utilities_NO_TLS.dir/Console.cpp.o
[ 15%] Building CXX object common/src/Utilities/CMakeFiles/Utilities.dir/Exceptions.cpp.o
[ 15%] Building CXX object plugins/GSnull/CMakeFiles/GSnull.dir/GS.cpp.o
distcc[27602] ERROR: compile (null) on localhost failed
../../../../common/src/x86emitter/cpudetect.cpp: In member function ‘void x86capabilities::SIMD_EstablishMXCSRmask()’:
../../../../common/src/x86emitter/cpudetect.cpp:48:23: error: ‘_fxsave’ was not declared in this scope
  _fxsave(&targetFXSAVE);
                       ^
common/src/x86emitter/CMakeFiles/x86emitter.dir/build.make:62: recipe for target 'common/src/x86emitter/CMakeFiles/x86emitter.dir/cpudetect.cpp.o' failed
make[2]: *** [common/src/x86emitter/CMakeFiles/x86emitter.dir/cpudetect.cpp.o] Error 1
CMakeFiles/Makefile2:273: recipe for target 'common/src/x86emitter/CMakeFiles/x86emitter.dir/all' failed
make[1]: *** [common/src/x86emitter/CMakeFiles/x86emitter.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

And the best part is:

CMake Warning:
  Manually-specified variables were not used by the project:

    GSDX_LEGACY

Last edited by Soukyuu (2016-05-09 16:15:22)


[ Arch x86_64 | linux | Framework 13 | AMD Ryzen™ 5 7640U | 32GB RAM | KDE Plasma Wayland ]

Offline

#10 2016-05-09 16:30:54

Gusar
Member
Registered: 2009-08-25
Posts: 3,605

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

You're confusing what's in pcsx2 git with the 1.4.0 release you're using.

Offline

#11 2016-05-09 16:45:53

Soukyuu
Member
Registered: 2014-04-08
Posts: 854

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

Thanks for the tip. While it now accepts the variable, the git package doesn't build for me either - the same metric ton of errors I had before updating:

[ 83%] Building CXX object pcsx2/CMakeFiles/PCSX2.dir/gui/AppUserMode.cpp.o
distcc[2825] ERROR: compile (null) on localhost failed
In file included from /usr/include/wx-3.0/wx/defs.h:689:0,
                 from /usr/include/wx-3.0/wx/string.h:24,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/include/stddef.h:436:27: error: typedef ‘decltype’ is initialized (use decltype instead)
   typedef decltype(nullptr) nullptr_t;
                           ^
/usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/include/stddef.h:436:20: error: ‘nullptr’ was not declared in this scope
   typedef decltype(nullptr) nullptr_t;
                    ^~~~~~~
In file included from /usr/include/c++/6.1.1/cstdlib:41:0,
                 from /usr/include/c++/6.1.1/stdlib.h:36,
                 from /usr/include/wx-3.0/wx/string.h:42,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/6.1.1/x86_64-pc-linux-gnu/32/bits/c++config.h:202:27: error: typedef ‘std::decltype’ is initialized (use decltype instead)
   typedef decltype(nullptr) nullptr_t;
                           ^
/usr/include/c++/6.1.1/x86_64-pc-linux-gnu/32/bits/c++config.h:202:20: error: ‘nullptr’ was not declared in this scope
   typedef decltype(nullptr) nullptr_t;
                    ^~~~~~~
In file included from /usr/include/c++/6.1.1/string:39:0,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/6.1.1/bits/stringfwd.h:63:33: error: ‘char16_t’ was not declared in this scope
   template<> struct char_traits<char16_t>;
                                 ^~~~~~~~
/usr/include/c++/6.1.1/bits/stringfwd.h:63:41: error: template argument 1 is invalid
   template<> struct char_traits<char16_t>;
                                         ^
/usr/include/c++/6.1.1/bits/stringfwd.h:64:33: error: ‘char32_t’ was not declared in this scope
   template<> struct char_traits<char32_t>;
                                 ^~~~~~~~
/usr/include/c++/6.1.1/bits/stringfwd.h:64:41: error: template argument 1 is invalid
   template<> struct char_traits<char32_t>;
                                         ^
/usr/include/c++/6.1.1/bits/stringfwd.h:84:24: error: ‘char16_t’ was not declared in this scope
   typedef basic_string<char16_t> u16string;
                        ^~~~~~~~
/usr/include/c++/6.1.1/bits/stringfwd.h:84:32: error: template argument 1 is invalid
   typedef basic_string<char16_t> u16string;
                                ^
/usr/include/c++/6.1.1/bits/stringfwd.h:84:32: error: template argument 2 is invalid
/usr/include/c++/6.1.1/bits/stringfwd.h:84:32: error: template argument 3 is invalid
/usr/include/c++/6.1.1/bits/stringfwd.h:87:24: error: ‘char32_t’ was not declared in this scope
   typedef basic_string<char32_t> u32string;
                        ^~~~~~~~
/usr/include/c++/6.1.1/bits/stringfwd.h:87:32: error: template argument 1 is invalid
   typedef basic_string<char32_t> u32string;
                                ^
/usr/include/c++/6.1.1/bits/stringfwd.h:87:32: error: template argument 2 is invalid
/usr/include/c++/6.1.1/bits/stringfwd.h:87:32: error: template argument 3 is invalid
In file included from /usr/include/c++/6.1.1/bits/stl_algobase.h:61:0,
                 from /usr/include/c++/6.1.1/bits/char_traits.h:39,
                 from /usr/include/c++/6.1.1/string:40,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/6.1.1/bits/cpp_type_traits.h:176:25: error: ‘char16_t’ was not declared in this scope
     struct __is_integer<char16_t>
                         ^~~~~~~~
/usr/include/c++/6.1.1/bits/cpp_type_traits.h:176:33: error: template argument 1 is invalid
     struct __is_integer<char16_t>
                                 ^
/usr/include/c++/6.1.1/bits/cpp_type_traits.h:183:25: error: ‘char32_t’ was not declared in this scope
     struct __is_integer<char32_t>
                         ^~~~~~~~
/usr/include/c++/6.1.1/bits/cpp_type_traits.h:183:33: error: template argument 1 is invalid
     struct __is_integer<char32_t>
                                 ^
In file included from /usr/include/c++/6.1.1/bits/stl_algobase.h:62:0,
                 from /usr/include/c++/6.1.1/bits/char_traits.h:39,
                 from /usr/include/c++/6.1.1/string:40,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/6.1.1/ext/type_traits.h:162:35: error: ‘__gnu_cxx::__is_null_pointer’ declared as an ‘inline’ variable
   __is_null_pointer(std::nullptr_t)
                                   ^
/usr/include/c++/6.1.1/ext/type_traits.h:162:35: error: ‘bool __gnu_cxx::__is_null_pointer’ redeclared as different kind of symbol
/usr/include/c++/6.1.1/ext/type_traits.h:157:5: note: previous declaration ‘template<class _Type> bool __gnu_cxx::__is_null_pointer(_Type)’
     __is_null_pointer(_Type)
     ^~~~~~~~~~~~~~~~~
/usr/include/c++/6.1.1/ext/type_traits.h:162:21: error: ‘nullptr_t’ is not a member of ‘std’
   __is_null_pointer(std::nullptr_t)
                     ^~~
In file included from /usr/include/c++/6.1.1/bits/stl_pair.h:59:0,
                 from /usr/include/c++/6.1.1/bits/stl_algobase.h:64,
                 from /usr/include/c++/6.1.1/bits/char_traits.h:39,
                 from /usr/include/c++/6.1.1/string:40,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/6.1.1/bits/move.h:47:27: error: expected initializer before ‘noexcept’
     __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
                           ^~~~~~~~
In file included from /usr/include/c++/6.1.1/bits/move.h:57:0,
                 from /usr/include/c++/6.1.1/bits/stl_pair.h:59,
                 from /usr/include/c++/6.1.1/bits/stl_algobase.h:64,
                 from /usr/include/c++/6.1.1/bits/char_traits.h:39,
                 from /usr/include/c++/6.1.1/string:40,
                 from /usr/include/wx-3.0/wx/stringimpl.h:66,
                 from /usr/include/wx-3.0/wx/unichar.h:15,
                 from /usr/include/wx-3.0/wx/strvararg.h:22,
                 from /usr/include/wx-3.0/wx/string.h:46,
                 from ../../common/include/Utilities/Dependencies.h:182,
                 from ../../pcsx2/PrecompiledHeader.h:25,
                 from ../../pcsx2/gui/AppConfig.cpp:16:
/usr/include/c++/6.1.1/type_traits:71:14: error: ‘constexpr’ does not name a type
       static constexpr _Tp                  value = __v;
              ^~~~~~~~~
/usr/include/c++/6.1.1/type_traits:71:14: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11
/usr/include/c++/6.1.1/type_traits:74:7: error: ‘constexpr’ does not name a type
       constexpr operator value_type() const { return value; }
       ^~~~~~~~~
/usr/include/c++/6.1.1/type_traits:74:7: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11
/usr/include/c++/6.1.1/type_traits:84:5: error: ‘constexpr’ does not name a type
     constexpr _Tp integral_constant<_Tp, __v>::value;
     ^~~~~~~~~
/usr/include/c++/6.1.1/type_traits:84:5: note: C++11 ‘constexpr’ only available with -std=c++11 or -std=gnu++11
/usr/include/c++/6.1.1/type_traits:93:5: error: expected unqualified-id before ‘using’
     using __bool_constant = integral_constant<bool, __v>;
     ^~~~~
...

[ Arch x86_64 | linux | Framework 13 | AMD Ryzen™ 5 7640U | 32GB RAM | KDE Plasma Wayland ]

Offline

#12 2016-05-09 17:07:50

Gusar
Member
Registered: 2009-08-25
Posts: 3,605

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

You will not gain anything by building yourself. What's in the 1.4.0 release *is* the legacy plugin.

You will not get around needing to play with GSdx settings, no matter how much you seem to want to avoid that.

Offline

#13 2016-05-09 17:13:28

Soukyuu
Member
Registered: 2014-04-08
Posts: 854

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

The legacy release is not supposed to use DSA, or have messages about DSA.
I'm not trying to avoid messing around with settings. Why is software mode rendering at 40-60fps while the usually faster hardware mode is running at 1-2fps?


[ Arch x86_64 | linux | Framework 13 | AMD Ryzen™ 5 7640U | 32GB RAM | KDE Plasma Wayland ]

Offline

#14 2016-05-09 17:36:10

Gusar
Member
Registered: 2009-08-25
Posts: 3,605

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

Soukyuu wrote:

The legacy release is not supposed to use DSA, or have messages about DSA.

What the devs did to get the legacy plugin is they simply copied GSdx into GSdx-legacy, then changed GSdx so that certain features that used to be optional are now mandatory. This includes DSA, so yes, the legacy plugin very much has DSA code in it.

Soukyuu wrote:

Why is software mode rendering at 40-60fps while the usually faster hardware mode is running at 1-2fps?

The PS2 is a very complex beast, containing several processors that tightly interact with each other (there's at least the Emotion Engine, two Vector Units and the Graphics Synthesizer, but there's also something called VIF I think, and who knows what else). Emulating that on the CPU is easier than splitting things up between CPU and GPU. Especially because the PS2 has little memory but lots of bandwidth, while a desktop PC is the exact opposite, it has lots of memory but little bandwidth. So the PS2 can constantly push a lot of data between all those processors, while constant CPU<->GPU memory transfers on a desktop PC are very costly.

The point of hardware mode is not speed. The point is to get better graphics by rendering stuff in higher resolution than the actual PS2 does. But this brings with it many issues, because a desktop GPU is just so very different from those many processors of the PS2, so emulating certain PS2 features on a desktop GPU brings it to its knees. And that's in addition to the memory transfer problem. PCSX2 tries to get around the memory transfer problem by caching as much data as possible, but emulating certain visual effects that the PS2 can easily do requires invalidating the cache often (otherwise you get graphical glitches, because you're using stale cached data instead of the data you should actually be using).

Offline

#15 2016-05-09 17:50:35

Soukyuu
Member
Registered: 2014-04-08
Posts: 854

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

My problem is that there is no GPU utilization, at all, at least according to nvidia's x server settings application. It actually drops from 7% to 1% the moment the first animation of the game is loaded. Only GS usage is stuck at 99%.
I've tried going down and up with the settings as far as I could, but the performance doesn't change at all. I can't imagine someone coded a mode that is unusable to such a degree, to be honest.

In any case, I reported this upstream, let's see what they think. Thanks for the suggestions so far.


[ Arch x86_64 | linux | Framework 13 | AMD Ryzen™ 5 7640U | 32GB RAM | KDE Plasma Wayland ]

Offline

#16 2016-05-09 17:54:55

Gusar
Member
Registered: 2009-08-25
Posts: 3,605

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

Soukyuu wrote:

I can't imagine someone coded a mode that is unusable to such a degree, to be honest.

Of course that's not the case. Intel GPUs do better than that. Much better. There's something in the interaction between GSdx, the 340xx driver and your particular GPU. Finding this "something", that's the challenge. I figured maybe force-disabling some of the OpenGL 4 usage in GSdx would do the trick.

Offline

#17 2016-05-16 20:19:24

Soukyuu
Member
Registered: 2014-04-08
Posts: 854

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

Ok, so after trying to debug this with the pcsx2 devs, it looks like it's a problem with the driver.
Running perf shows that most of the cycles are spent within the nvidia blob. I don't have a problem with GL performance with 64-bit apps, or if I do, then not to this extent. Could it be some sort of bug in the lib32-nvidia-340xx package?

Does it make sense for the nvidia module to load drm?


[ Arch x86_64 | linux | Framework 13 | AMD Ryzen™ 5 7640U | 32GB RAM | KDE Plasma Wayland ]

Offline

#18 2016-05-17 03:32:41

Gusar
Member
Registered: 2009-08-25
Posts: 3,605

Re: PCSX2 + nVidia blob + gdsx HW abysmal performance

Soukyuu wrote:

Does it make sense for the nvidia module to load drm?

Yes. In the legacy branches, mainly to just register the driver with the DRM subsystem. But in the mainline driver, the use of DRM goes even further than that. So yeah, it makes sense and is normal that Nvidia loads the drm module.

Offline

Board footer

Powered by FluxBB