vk_query_slots: in the Game settings dialog (switch, Troubleshooting; Unreal Vulkan games), 1 = on; fix the settings-dialog test and the translation template

This commit is contained in:
spoopyghosty0 committed 2026-10-05 16:37:10 -04:00
1 parent ef21b33ca2
commit cf900cd9d4
5 files changed
+12 -6

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
48a3ecad77ec0f3215b29070e994590eb9579e04d3c88a47f37f306f9aeb01d9 ./arm64-v8a/libfp_langpack.so
a5b03bb7ae5d953d7ded2bf117b0a19c57fae604f16f54310847f8e89593dde6 ./arm64-v8a/libfp_ovrp.so
175f19d5373229f29acf71bc7cfefcf9bd4c8fa30fb8fe65689bd7922ce1dbbb ./arm64-v8a/libfp_vk.so
0fc2bc332c06902f2e4b8b5cfb873098fae0e8c72f79c6cb4490cea7ae30b6eb ./arm64-v8a/libfp_vk.so
8e00552d1ab90f82749db3caad4f773351fa8a28edcc5ea5cbd1b31c434ff32a ./arm64-v8a/libframe_xrshim.so
3dfcb0f2bec47857bcecc7261c58e076d872d4649718c40850f29e10c75477dd ./arm64-v8a/libglshim.so
3e05bb8561c7fd8787b3120739b3ce66c68badb5b00571bd50ae7e6c1f159274 ./arm64-v8a/libopenxr_loader_generic.so
Binary file not shown.
+1 -1
View File
@@ -91,7 +91,7 @@ static void read_settings(const char *path) {
line[strcspn(line, "\r\n")] = 0;
if (!strncmp(line, "vk_query_slots=", 15)) {
int v = atoi(line + 15);
query_slots = v >= 2 && v <= 4 ? v : 1;
query_slots = v == 1 ? 2 : v >= 2 && v <= 4 ? v : 1; // 1 = on (the settings dialog's switch) = 2 slots
}
if (!strncmp(line, "vk_shader_fix=", 14)) {
nfixes = 0; // later sources override earlier ones (as for the adapter's settings)
+3 -2
View File
@@ -360,6 +360,7 @@
"For mixed-reality-only games. On the Frame, passthrough is emulated by the FrameBridge adapter (greyscale cameras).": "",
"For one eye looking wrong (e.g. a jittering right eye): logs each eye's submitted pose against a fresh one, the eye-to-eye relation and when each eye's image was released, also into framebridge.log in the game's storage (some games stop Android's log early). No effect on the game.": "",
"For Unreal games that close themselves right after starting (e.g. Phantom: Covert Ops). Also disables the in-game Quit.": "",
"For Vulkan games whose models flicker or vanish while you look at them (e.g. Into The Radius 2). Needs a rebuild.": "",
"Force enable passthrough": "",
"Found": "",
"Frame agent": "",
@@ -923,6 +924,7 @@
"steamos@frame.local or an IP address": "",
"SteamVR": "",
"Stereo (3D) 360° layers: 0 = as the game sends them, 2 = flat (the left image to both eyes).": "",
"Stop objects popping in and out": "",
"Stops Meta's audio library from reporting to Meta (only matters on PC emulators).": "",
"Stops some Unreal games from closing themselves right after starting.": "",
"Stops strict debugging checks that make some games quit.": "",
@@ -1111,9 +1113,8 @@
"VrApi → OpenXR adapter (OVRPort)": "",
"VrApi → OpenXR bridge": "",
"Vulkan shader fixes": "",
"Vulkan shim (frame.vk_sanitize): 2 gives every occlusion query room for both eyes. In multiview passes the Frame's driver writes a zero result for the second eye into the next query, so engines that count on one slot cull visible objects (models popping in and out, e.g. Into The Radius 2). 0 = off.": "",
"Vulkan shim (frame.vk_sanitize): 2 gives every occlusion query room for both eyes. In multiview passes the Frame's driver writes a zero result for the second eye into the next query, so engines that count on one slot cull visible objects (models popping in and out, e.g. Into The Radius 2). 0 = off, 1 = on (2 slots), 3-4 = more.": "",
"Vulkan shim (frame.vk_sanitize): SPIR-V modules matching size + SHA-256 get words inserted at a byte offset, e.g. stores that initialize locals a shader reads before writing (an undefined loop counter hung the GPU in VR4's campaign). Format: <size>:<sha256>:<byte offset>:<word>,<word>,...; several separated by ';'. Comes from a game's recipe.": "",
"Vulkan shim: slots per occlusion query": "",
"Vulkan: drop invalid render-pass pointers": "",
"v{remote} (updates on the next action)": "",
"Wait for the game's GPU before showing an image": "",
+7 -2
View File
@@ -120,9 +120,9 @@ SETTINGS = [
"VR4's campaign). Format: <size>:<sha256>:<byte offset>:<word>,<word>,...; several separated by ';'. Comes from "
"a game's recipe."),
("vk_query_slots", "int", 0, "Vulkan shim: slots per occlusion query",
"Vulkan shim (frame.vk_sanitize): 2 gives every occlusion query room for both eyes. In multiview passes the "
"Vulkan shim (frame.vk_sanitize): on gives every occlusion query room for both eyes. In multiview passes the "
"Frame's driver writes a zero result for the second eye into the next query, so engines that count on one slot "
"cull visible objects (models popping in and out, e.g. Into The Radius 2). 0 = off."),
"cull visible objects (models popping in and out, e.g. Into The Radius 2). 0 = off, 1 = on (2 slots)."),
("gl_hide_multiview", "int", 1, "GL shim: hide multiview",
"GL shim only: hide GL_OVR_multiview so all passes use single-view shaders. For GLES games whose multiview "
"shaders fail on single-view render targets (e.g. Path of the Warrior)."),
@@ -152,6 +152,10 @@ UI: dict[str, dict] = {
"focus_hold_ms": dict(group="screens", level="advanced", label="Ignore focus dips up to", depends="focus_hold",
help="Longer for headsets that briefly think they're off your head.",
control=("slider", 500.0, 3000.0, 100.0, "{:.0f} ms")),
"vk_query_slots": dict(group="troubleshooting", level="advanced", label="Stop objects popping in and out",
help="For Vulkan games whose models flicker or vanish while you look at them (e.g. Into "
"The Radius 2). Needs a rebuild.",
control=("switch",)),
"sync_guard": dict(group="troubleshooting", level="advanced", label="Steady controller input after focus",
help="For games that crash right after you return to them (e.g. after the Steam menu).",
control=("switch",)),
@@ -272,6 +276,7 @@ class AdapterSetting(Patch):
"swapchain_fix": ap.is_gles,
"gl_hide_multiview": lambda a: a.direct_vrapi and ap.is_gles(a),
"vk_shader_fix": lambda a: a.engine == "Unreal", # read by the Vulkan shim, which only Unreal games get
"vk_query_slots": lambda a: a.engine == "Unreal" and ap.is_vulkan(a),
"controller_models": ap.may_use_render_models,
**{k: ap.is_gles for k in ("equirect_emul", "equirect_face", "equirect_res", "equirect_flip",
"equirect_fps", "equirect_stereo")},