Bug 257175 - [NEW PORT] emulators/xenia: Xbox 360 Emulator
Summary: [NEW PORT] emulators/xenia: Xbox 360 Emulator
Status: Open
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-ports-bugs (Nobody)
Keywords: patch
Depends on:
Reported: 2021-07-14 07:00 UTC by Timothy Beyer
Modified: 2021-07-19 19:03 UTC (History)
2 users (show)

See Also:

emulators_xenia.shar (37.19 KB, text/plain)
2021-07-14 07:00 UTC, Timothy Beyer
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Timothy Beyer 2021-07-14 07:00:58 UTC
Created attachment 226448 [details]

I'm releasing my preliminary work on porting Xenia, an Xbox 360 emulator working with commercial games to FreeBSD.  It needed a lot of patches to work around threading differences between Linux and FreeBSD.  Most notably, I had to revert one file back two revisions to address C++17 compatibility (Xenia requires a C++17 compatible compiler, and clang++ is the only officially supported C++ compiler by the developers) with the LLVM include headers in /usr/src/include. 
 Prior to rolling back that file, there were notorious issues with fstream, iostream, and I ultimately brought in boost_nowide to get it to compile (I might try a simpler version later without this library since I have since resolved the standard library issues).

I will admit that while Xenia has been compiling without issues for a week or longer, I don't know if it runs, because it is so finicky on compatible hardware, and has extremely high GPU and CPU requirements to run games at full speed, even on Windows with current Direct X API support.  It is absolutely necessary to have a GPU with Vulkan API support, and further, you must enable one of the Vulkan backends for any games to work at all.  The compatibility is different between these two Vulkan backends (the legacy backend won't work with any games at all, and the other is undergoing testing) and the Direct X backend, the latter of which obviously will not work on Linux or FreeBSD.

If anyone can test this, I would appreciate if folks try building and let me know if it is working for them.  I have had limited success with the Windows version on one of my slower machines, but only with Direct X, although I am going to experiment some more and document the installation steps.

I'll be improving this port rapidly, so by the time a committer gets to this submission, it will probably be confirmed as working with some games.
Comment 1 Timothy Beyer 2021-07-14 07:05:47 UTC
Sorry, typo, I meant /usr/include in referring to the include directory.
Comment 2 Guangyuan Yang freebsd_committer 2021-07-18 07:59:19 UTC
Timothy, first of all, thanks for working on this! I suggest that you create a review on https://reviews.freebsd.org/ and link it back here, so that committers can have an easier time providing feedback for lengthy patches. Thanks!
Comment 3 Timothy Beyer 2021-07-18 20:30:21 UTC
(In reply to Guangyuan Yang from comment #2)
Thank you! I will definitely create a review.