Page MenuHomeSolus

Initial commit of libstrangle
ClosedPublic

Authored by aleksvor on Nov 15 2018, 4:27 PM.

Details

Summary

Initial commit of libstrangle.
Resolves T7160.

Test Plan

OpenGL games:

  1. Minetest (native game with working built-in VSync) - libstrangle works as expected.
  2. Metro 2033 Redux (native game with dysfunctional VSync) - works as expected, frame tearing is gone.
  3. S.T.A.L.K.E.R.: Shadow of Chernobyl (Windows game in Proton with dysfunctional VSync) - works as expected, frame tearing is gone.

Vulkan applications:

  1. Serious Sam Fusion 2017 (native game, working built-in VSync) - seems that libstrangle didn't have any effect on the game.
  2. Forsaken Remastered (native game, working VSync) - no effect.
  3. vulkan-cube - works as expected.

Seems that all Vulkan games in Steam ignore libstrangle for some reason, and it's a known issue.

Diff Detail

Repository
R4585 libstrangle
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

aleksvor created this revision.Nov 15 2018, 4:27 PM
aleksvor requested review of this revision.Nov 15 2018, 4:27 PM

Have you tested this with a Vulkan game? I'm fairly sure it won't work ootb (it is looking to dlopen libvulkan.so). Also you should probably make a patch than all the seds.

aleksvor updated this revision to Diff 10723.Nov 17 2018, 12:22 PM
  1. Moved all configurations to patch.
  2. Added vulkan-32bit-devel to rundeps to have all necessary symlinks in place.
aleksvor edited the test plan for this revision. (Show Details)Nov 17 2018, 12:29 PM
kyrios123 added a subscriber: kyrios123.EditedNov 17 2018, 1:38 PM
  • You have to set emul32 to yes, if you need 32bit packages.
  • The builddeps are not necessary
  • You should remove the patterns

I don't think the runtime dependency solve anything, but if it should be the case, are you sure you need the -devel package ? and you should not put a 32bit dependency for the whole package but only for - 32bit : vulkan-32bit

  • You have to set emul32 to yes, if you need 32bit packages.
  • The builddeps are not necessary
  • You should remove the patterns

I don't think the runtime dependency solve anything, but if it should be the case, are you sure you need the -devel package ? and you should not put a 32bit dependency for the whole package but only for - 32bit : vulkan-32bit

Thanks for suggestions, @kyrios123 ! I think that splitting this into separate packages would bring more complexity and confusion for end users: since we need to match architectures of the libstrangle.so and the executable being run, I think it would be easier for users if they were provided with both libs ootb. Why make them determine the arch of the executable and download appropriate package themselves? But, of course, I can look into separating packages if it's a mandatory requirement.

And about devel packages for Vulkan - that's because libstrangle tries to dlopen libvulkan.so (as found out by @sunnyflunk), which is a symlink that is provided in vulkan-devel for 64bit library and vulkan-32bit-devel for 32bit library.

I had to make patterns so ypkg gets the libraries into the main package. ypkg treats sonames without appended versions as symlinks for development and automatically places them in devel subpackages. And in case with libstrangle, the actual libs are built without versions in the file name (as you can see in pspec), so without these patterns the main package builds without any libraries at all - they go in devel subpackages instead.

I was more thinking to patch the code rather than add devel rundep

aleksvor updated this revision to Diff 10765.Nov 18 2018, 5:43 PM
  1. Patched to use versioned symlink to libvulkan.
  2. Removed devel Vulkan packages from rundeps.
aleksvor edited the test plan for this revision. (Show Details)Nov 18 2018, 5:49 PM

I don't believe /etc/ld.so.conf.d/libstrangle.conf is required (and makes the package non-stateless). /usr/lib32 and /usr/lib64 are known by default, so they don't need a ld.so.conf file. See https://dev.getsol.us/source/glibc/browse/master/files/0002-sysdeps-Add-support-for-usr-lib32-as-a-system-librar.patch

aleksvor updated this revision to Diff 10848.Nov 21 2018, 12:38 PM

Updated the patch to remove libstrangle.conf.

sunnyflunk accepted this revision.Nov 26 2018, 11:56 PM

LGTM, thanks

This revision is now accepted and ready to land.Nov 26 2018, 11:56 PM
This revision was automatically updated to reflect the committed changes.