Hi,

Here is a WIP port of PCSX2 2.6.3. It runs well with the few games
I've tested on my machine (with Intel graphics) using OpenGL as the
renderer. Testers, tips, and corrections are appreciated.

I am also attaching the update diff for emulators/libchdr and the
port for graphics/plutosvg that I sent before since they are needed
for this port.

A few notes:
- I followed FreeBSD's example and added a system wide resources path.
  Game patches can be added by downloading patches.zip and placing it
  in the resources directory (see the pkg-readme).
- In cmake/SearchForStuff.cmake, I replaced the included third party
  packages with using the existing ports of fast_float, libchdr,
  soundtouch, simpleini, libzip, RapidJSON, and fmt. (This requres
  libchdr be updated)
- A core dump can be triggered when using  Vulkan on Intel integrated
  graphics while running a game (specifically Sly Cooper). No coredumps
  found with OpenGL yet though. (backtrace and part of dmesg below)

Patches for these files were more involved and could use attention:

common/Linux/LnxHostSys.cpp:
- Replaced MAP_FIXED_NOREPLACE by unmapping and returning nullptr if
  mmap didn't return a pointer where it was requested.
- Added OpenBSD exception information for the page fault handler for
  x86.  I believe this could also be done for arm64. It would be nice to
  have someone who knows more about sigcontext/ucontext take a look at
  this.

common/Linux/LnxMisc.cpp:
- Replaced clock_nanosleep with nanosleep(2) and subtraction.
- Changed to get available memory using sysconf rather than
  /proc/meminfo.

3rdparty/cpuinfo/src/x86/openbsd/init.c:
- This is a cpuinfo init for OpenBSD made with the FreeBSD init and
  lscpu.c from sysutils/lscpu.  This probably could use more trimming
  and someone more knowledgeable about getting cpu info (number of
  cpus, cores, threads, core clusters, etc).  I wasn't sure how to
  figure out the number of physical core clusters, so right now I
  have it assigned to be the same as the number of cores, which I
  am sure is not right.

Thanks,
Matthew

---
Information for inst:pcsx2-2.6.3

Comment:
Playstation 2 emulator

Description:
PCSX2 is a free and open-source PlayStation 2 (PS2) emulator.

Its purpose is to emulate the PS2's hardware, using a combination
of MIPS CPU Interpreters, Recompilers and a Virtual Machine which
manages hardware states and PS2 system memory.

Maintainer: The OpenBSD ports mailing-list <[email protected]>

WWW: https://pcsx2.net
---

Backtrace for coredump when using Vulkan:
-----------------------------------------
#0  thrkill () at /tmp/-:2
#1  0x5b145a028cc1fb70 in ?? ()
#2  0x000008f95538162b in _libc_abort () at /usr/src/lib/libc/stdlib/abort.c:51
#3  0x000008f684afbcbd in AbortWithMessage(char const*) ()
#4  0x000008f684aefdd4 in pxOnAssertFail(char const*, int, char const*, char 
const*) ()
#5  0x000008f6843df97f in GSRenderer::BeginPresentFrame(bool) ()
#6  0x000008f6843e0661 in GSRenderer::VSync(unsigned int, bool, bool) ()
#7  0x000008f6843e8d92 in GSRendererHW::VSync(unsigned int, bool, bool) ()
#8  0x000008f68424ed4c in MTGS::ThreadEntryPoint() ()
#9  0x000008f684b19d99 in Threading::Thread::ThreadProc(void*) ()
#10 0x000008f8ea8b00d2 in _rthread_start (v=0x0) at 
/usr/src/lib/librthread/rthread.c:99
#11 0x000008f9553aeb2a in __tfork_thread () at 
/usr/src/lib/libc/arch/amd64/sys/tfork_thread.S:87

Relevant parts of dmesg:
------------------------
inteldrm0 at pci0 dev 2 function 0 "Intel HD Graphics 630" rev 0x04
drm0 at inteldrm0
inteldrm0: msi, KABYLAKE, gen 9
drm : [drm] Not enough lanes (0) for DP on [ENCODER:117:DDI E/PHY E]
inteldrm0: 1920x1080, 32bpp

drm:pid85269:__intel_engine_reset_bh *NOTICE* [drm] Resetting rcs0 for 
preemption time out
drm:pid85269:mark_guilty *NOTICE* [drm] pcsx2-qt[96890] context reset due to 
GPU hang
intel_pool_init: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_create: stub
i915_vma_coredump_free: stub
err_free_sgl: stub

Attachment: pcsx2.tgz
Description: application/tar-gz

commit - 04f87ba1101d5bc5a2ab0fc67685e47ab9c11919
blob - c80d172d35bc8dd7d3fc80b213c16ba36033be18
file + emulators/libchdr/Makefile
--- emulators/libchdr/Makefile
+++ emulators/libchdr/Makefile
@@ -2,12 +2,12 @@ BROKEN-aarch64 = looks for sys/auxv.h
 
 COMMENT =      library for reading MAME's CHDv1-v5 formats
 
-V =            1.0pl20230220
+V =            1.0pl20251226
 DISTNAME =     libchdr-$V
 
 GH_ACCOUNT =   rtissera
 GH_PROJECT =   libchdr
-GH_COMMIT =    fec8ab94212cc65d9d9a62cb3da924f5830c04b0
+GH_COMMIT =    07a7dad23378b001f4ab174ef51bd6553f883edd
 
 SHARED_LIBS += chdr    1.0 # 0.1
 
commit - 04f87ba1101d5bc5a2ab0fc67685e47ab9c11919
blob - d53067a351af193b6c0a50c35ce9831ba89b0867
file + emulators/libchdr/distinfo
--- emulators/libchdr/distinfo
+++ emulators/libchdr/distinfo
@@ -1,2 +1,2 @@
-SHA256 (libchdr-1.0pl20230220-fec8ab94.tar.gz) = 
i4fxorIt44yfsWdRN8jxl0MQW4NzrYynDs8DpjngT88=
-SIZE (libchdr-1.0pl20230220-fec8ab94.tar.gz) = 1748513
+SHA256 (libchdr-1.0pl20251226-07a7dad2.tar.gz) = 
j6dteAW0Ba3jbkpFHkBl17fDX1AcjsbrGerAls/5X+o=
+SIZE (libchdr-1.0pl20251226-07a7dad2.tar.gz) = 4223733
commit - 04f87ba1101d5bc5a2ab0fc67685e47ab9c11919
blob - d67f987ae74955c780c0027dab9126b3af7f5a4c
file + /dev/null
--- emulators/libchdr/patches/patch-CMakeLists_txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: CMakeLists.txt
---- CMakeLists.txt.orig
-+++ CMakeLists.txt
-@@ -79,7 +79,7 @@ if (BUILD_SHARED_LIBS)
-   elseif(APPLE)
-     target_link_libraries(chdr PRIVATE -Wl,-dead_strip 
-Wl,-exported_symbol,_chd_*)
-   else()
--    target_link_libraries(chdr PRIVATE -Wl,--version-script 
${CMAKE_CURRENT_SOURCE_DIR}/src/link.T -Wl,--no-undefined)
-+    target_link_libraries(chdr PRIVATE -Wl,--version-script 
${CMAKE_CURRENT_SOURCE_DIR}/src/link.T)
-   endif()
- 
-   set_target_properties(chdr PROPERTIES C_VISIBILITY_PRESET hidden)

Attachment: plutosvg.tgz
Description: application/tar-gz

Reply via email to