Areas of interest for new linux developers
#1
Dears Linux developper.

I know you're busy trolling in window forum but now it is time to do your homework Wink

Here a short list of what can be done on PCSX2 linux. It is a good start if you want to contribute. The list is not complete feel free to post some idea even if you're not a dev.

The rules:
1/ you register first to a feature.
2/ then we discuss a bit how to implement it? What I want. The difficult part....
3/ then you can implement it.

The feature list:
house keeping/general compilation:
2a/ clean gcc flag option => need a lots of test
Quote:Currently, we have lots of flags to enable compilation option one by one (i.e. -f....). The idea will be to reduce to somethings more global (01, 02). Some flags may broke pcsx2 so it must be tested carefully. Some flags are disabled, it might be safer to keep them disabled for the moment. Clang will only support a subset of this option, that why we need to limit them as much as possible. Note: the build file are cmake file.
2b/ clean gcc warning => 1 warning at a time. And we must be done very carefully
3a/ support clang (build OK, but don't run yet)
3b/ speeed comparison between clang and gcc
5a/ add missing license header on lots of file. First on files/plugins used on the linux build.
6a/ trial on LTO/PGO
6b/ allow to easily enable/disable LTO/PGO


GSdx:

11a/ GSdx ogl miss some features We first need to list them and implement the useful one.
14/ advance: finish to port shader subroutine. Postponed (so far it isn't a huge success)
Quote:Various parameters was already ported. Remains to enable them and to test the code
Then port a couple of critical parameter.
16/ add (port) a way to record video of gameplay


CDVD:


zzogl:
30a/ reduce glsl requirement (create a 3.3 (3.1) context with GL4 extensions)
31a/ use multibind
32a/ test EGL and fix it.
39a/ drop previous GLSL port & drop CG (when opensource solution reach 3.3 (3.1) support for 'old' hardware)

Portability: (support must be checked on older distribution)
40a/ port GSThread to std::thread instead of pthread
41a/ use C11 aligned_alloc instead of internal function
41b/ Use C+11 alignof syntax
Reply

Sponsored links

#2
Hey gregory,

I'm interested in playing around with adding support building with clang - 3a in your list, but I can take care of 2a/b as well. Guess, I'll start with 2a first. I did take a quick look through the build files, but can you provide mode details on what the current issues are and what needs to be done in your opinion (pm me if you want)?
Reply
#3
Sure, let's begin with 2a. It is very easy to implement but hard to test. Current, we have lots of flags to enable compilation option one by one (i.e. -f....). The idea will be to reduce to somethings more global (01, 02). Some flags may broke pcsx2 so it must be tested carefully. Some flags are disabled, it might be safer to keep them disabled for the moment. Clang will only support a subset of this option, that why we need to limit them as much as possible. Note: the build file are cmake file.
Reply
#4
gregory Wrote:Portability: (support must be checked on older distribution)
40a/ port GSThread to std::thread instead of pthread
41a/ use C11 aligned_alloc instead of internal function
41b/ Use C+11 alignof syntax
42a/ Use C++ atomic instead of volatile/old intrinsic

Is 40a or any other task from the portability section still available? I can take care of them.
Reply
#5
On 40a, there is krysto on this thread. I hope he progress well Smile
http://forums.pcsx2.net/Thread-PCSX2-Lin...ent?page=5

I did a couple of stuff 3 days ago for 41a but not sure all code was replaced. Feel free to check aligned allocation code Wink

41b/ you need first to check the support on msvc and gcc. Oh by the way check the standard, they add more capabilities than only alignof.

42b/ Check support of gcc, MSVC 2010 (win xp) doesn't support it. So it would be linux only for the moment until win xp is dropped.
Reply
#6
So a couple of days ago I started working on updating all of the Code::Blocks IDE files so they actually work. I've gotten everything to build and am currently trying to get everything to run without crashing. I'm having some interesting errors in plugins with .so loading (it looks like some of the plugins are exposing c++ name mangled versions of API implementations or something. Haven't looked too much) but I should hopefully get everything fixed up rather soon. After the codeblocks files are updated I'm gonna look at cleaning up gcc flags and getting pcsx2 to build with clang. I tried it out; a fair amount of plugins build alright but there's some crazy template code that errors on clang3.4 (and I have minimal experience with the STL / wx). Anyway, repo is here. Testing is a bit slow, my only working linux setup at the moment is my Acer c720 chromebook (running Arch) with one game: Kingdom Hearts. I'll get my desktop setup eventually so by then builds will at least be faster.
Reply
#7
Interesting, but won't it be possible to interface code block with cmake? I'm afraid that your update will bit-rot or broke on next update.

For gcc flags someone is also working on it https://github.com/PCSX2/pcsx2/pull/81 so I would suggest to concentrate on clang. Yes I confirm that the main issue is template.
Reply
#8
It shouldn't be too hard to make codeblocks build with cmake. It'd require some magic as far as making all the projects use custom makefiles and doing all of the cmake stuff as pre build steps. I'll check it out.
Reply
#9
By the way, I managed to find the issue with template for clang but I failed on asm syntax error.
Code:
/home/gregory/playstation/emulateur/pcsx2/common/src/Utilities/x86/MemcpyVibes.cpp:186:18: error: unknown token in expression
                "sub        %[qwc], 1\n"                // dec the counter to ease the count of 16bytes block later (optimization)
                 ^
<inline asm>:2:12: note: instantiated into assembly here
sub        %edx, 1
           ^

edit: it seems clang doesn't support the exact same syntax of asm as gcc...
Reply
#10
Hi Gregory,

I made some tests with Link Time Optimizations (6a and 6b).

Implementation seem to be "easy", I added a parameter (--lto) to build.sh script, which pass -flto to compilers and linker through -DUSER_CMAKE_LD_FLAGS, -DUSER_CMAKE_C_FLAGS and -DUSER_CMAKE_CXX_FLAGS (for now).

First build (gcc 4.8, linux mint 32 bits, git version), no error... Yay !!!

Changes i saw :
- increased time compilation: about 20% longer.
- great reduction of pcsx2-dev executable: from ~30mb to ~10mb...

I couldn't go further, due to lack of time before going to work.

But this evening, I will make some test with some games I own.

What's the protocol, what do you need to know ?
Reply




Users browsing this thread: 1 Guest(s)