Package Details: pcsx2-avx-git 2.3.1.r59.g73549038-1

Git Clone URL: https://aur.archlinux.org/pcsx2-avx-git.git (read-only, click to copy)
Package Base: pcsx2-avx-git
Description: Sony PlayStation 2 emulator
Upstream URL: https://github.com/PCSX2/pcsx2
Licenses: GPL-3.0-or-later
Conflicts: pcsx2
Provides: pcsx2
Submitter: xiota
Maintainer: xiota
Last Packager: xiota
Votes: 2
Popularity: 0.026262
First Submitted: 2023-12-13 14:14 (UTC)
Last Updated: 2024-11-10 23:49 (UTC)

Required by (4)

Sources (3)

Pinned Comments

xiota commented on 2024-01-24 03:02 (UTC) (edited on 2024-02-13 12:57 (UTC) by xiota)

Those interested in profile-guided optimization may try a time-consuming process.

  1. Make instrumented package:
    • Set environment variable or edit PKGBUILD: _build_instrumented=true
    • Resulting package: pcsx2-instrumented-avx-git
  2. Create raw profiles using instrumented package.
    • LLVM_PROFILE_FILE="default_%9m.profraw" pcsx2-qt
    • Use a "representative" sample of roms.
    • After 9 runs, profraw files will be overwritten.
  3. Process profiles:
    • llvm-profdata merge -output=pcsx2-avx-git.profdata *.profraw
  4. Rebuild package.
    • Put pcsx2-avx-git.profdata in same folder with PKGBUILD.
    • Look for message: "Compiling with profile-guided optimization."
    • Profile can be reused. Re-profile when there are too many "function control flow change" warnings.
    • Resulting package: pcsx2-avx-git

xiota commented on 2023-12-13 14:29 (UTC) (edited on 2024-01-24 02:57 (UTC) by xiota)

This package targets x86-64-v3 instructions. Performance benefit over standard builds is minimal because of dynamic dispatch.

  • Binaries available at aur.chaotic.cx

  • Avoid flagging and commenting at the same time for the same issue.

    • Flag for common issues with standard solutions, like submodule updates.
    • Comment for issues requiring explanation or debugging.
      • Use a pastebin for blocks of text more than a few lines.

Latest Comments

« First ‹ Previous 1 2 3 4 5

LarryDave commented on 2024-02-18 19:40 (UTC)

Nevermind, I guess I get it now. Passed to the linker as you said. Put it at the beginning before -W1, O1 and it worked now.

Btw, what is there reason for preventing -march=native? I replaced the x86-64-v3 mentions with rocketlake as that is what my CPU family is. Just wondering.

LarryDave commented on 2024-02-18 08:32 (UTC)

So to use mold, I don't use mold? That doesn't make sense. I just followed what the wiki said. https://wiki.archlinux.org/title/Makepkg#Using_mold_linker

To use mold, append -fuse-ld=mold to LDFLAGS.

Doesn't matter if I put -fuse-ld=mold right after -Wl,-O1 or at the very end after -z,pack-relative-relocs, it fails. Maybe I don't get it...

xiota commented on 2024-02-16 23:52 (UTC) (edited on 2024-02-16 23:56 (UTC) by xiota)

@LarryDave Your initial comment did not contain details or logs needed to reproduce the problem.

From the log, LDFLAGS in your makepkg.conf most likely contains:

-Wl,-O1,-fuse-ld=mold,--sort-common,--as-needed,-z,relro,-z,now,-z,pack-relative-relocs

-Wl contains options to pass to the linker. -fuse-ld is an option for the compiler to switch linkers. When -fuse-ld is part of -Wl, it is sent directly to the linker. Consequently, your config has been linking with ld, not mold. ld ignores -fuse-ld.

The PKGBUILD does switch linkers by passing -fuse-ld to the compiler. Both mold and lld would generate errors with your config because the extraneous option is unknown to them.

LarryDave commented on 2024-02-16 11:44 (UTC)

I mean, I don't know what to tell you. Removing -fuse-ld=mold from my /etc/makepkg.conf fixes it. Can you try having that in your own makepkg.conf rather than adding it twice with LDFLAGS+?

https://privatebin.net/?0389615227a0cd9d#B4gW4MoQy7k1PdtHBknrQkhbokNXaWvAPVaXwQLiYgwS

When I have -fuse-ld=mold in my /etc/makepkg.conf, it fails when both build_clang and build_mold is set to true. Literally the only thing I do is remove -fuse-ld=mold from my own makepkg.conf and it builds without issue.

xiota commented on 2024-02-11 02:30 (UTC)

@LarryDave I doubt duplicate use-ld options is the cause of your problem. Most compilers ignore duplicate flags, respecting the last one. I was able to build successfully with:

LDFLAGS+=" -fuse-ld=mold -fuse-ld=mold"

LarryDave commented on 2024-02-10 16:19 (UTC)

Fails building if /etc/makepkg.conf LDFLAGS already contains -fuse-ld=mold when both clang and mold options are set to true. Removing -fuse-ld=mold from my makepkg.conf fixes it.

xiota commented on 2024-01-24 03:02 (UTC) (edited on 2024-02-13 12:57 (UTC) by xiota)

Those interested in profile-guided optimization may try a time-consuming process.

  1. Make instrumented package:
    • Set environment variable or edit PKGBUILD: _build_instrumented=true
    • Resulting package: pcsx2-instrumented-avx-git
  2. Create raw profiles using instrumented package.
    • LLVM_PROFILE_FILE="default_%9m.profraw" pcsx2-qt
    • Use a "representative" sample of roms.
    • After 9 runs, profraw files will be overwritten.
  3. Process profiles:
    • llvm-profdata merge -output=pcsx2-avx-git.profdata *.profraw
  4. Rebuild package.
    • Put pcsx2-avx-git.profdata in same folder with PKGBUILD.
    • Look for message: "Compiling with profile-guided optimization."
    • Profile can be reused. Re-profile when there are too many "function control flow change" warnings.
    • Resulting package: pcsx2-avx-git

robertfoster commented on 2024-01-14 09:43 (UTC)

Hi, here some warning during build:

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

    ARCH_FLAG
    ENABLE_LTO

xiota commented on 2023-12-13 14:29 (UTC) (edited on 2024-01-24 02:57 (UTC) by xiota)

This package targets x86-64-v3 instructions. Performance benefit over standard builds is minimal because of dynamic dispatch.

  • Binaries available at aur.chaotic.cx

  • Avoid flagging and commenting at the same time for the same issue.

    • Flag for common issues with standard solutions, like submodule updates.
    • Comment for issues requiring explanation or debugging.
      • Use a pastebin for blocks of text more than a few lines.