/** ****************************************************************************** * Xenia : Xbox 360 Emulator Research Project * ****************************************************************************** * Copyright 2020 Ben Vanik. All rights reserved. * * Released under the BSD license - see LICENSE in the root for more details. * ****************************************************************************** */ #include "xenia/gpu/gpu_flags.h" DEFINE_path(trace_gpu_prefix, "scratch/gpu/", "Prefix path for GPU trace files.", "GPU"); DEFINE_bool(trace_gpu_stream, false, "Trace all GPU packets.", "GPU"); DEFINE_path( dump_shaders, "", "For shader debugging, path to dump GPU shaders to as they are compiled.", "GPU"); DEFINE_bool(vsync, true, "Enable VSYNC.", "GPU"); DEFINE_uint64(framerate_limit, 0, "Maximum frames per second. 0 = Unlimited frames.\n" "Defaults to 60, when set to 0, and VSYNC is enabled.", "GPU"); UPDATE_from_uint64(framerate_limit, 2024, 8, 31, 20, 60); DEFINE_bool( gpu_allow_invalid_fetch_constants, true, "Allow texture and vertex fetch constants with invalid type - generally " "unsafe because the constant may contain completely invalid values, but " "may be used to bypass fetch constant type errors in certain games until " "the real reason why they're invalid is found.", "GPU"); DEFINE_bool( gpu_allow_invalid_upload_range, false, "Allows games to read data from pages that are marked as no access.", "GPU"); DEFINE_bool( non_seamless_cube_map, true, "Disable filtering between cube map faces near edges where possible " "(Vulkan with VK_EXT_non_seamless_cube_map) to reproduce the Direct3D 9 " "behavior.", "GPU"); // Extremely bright screen borders in 4D5307E6. // Reading between texels with half-pixel offset in 58410954. DEFINE_bool( half_pixel_offset, true, "Enable support of vertex half-pixel offset (D3D9 PA_SU_VTX_CNTL " "PIX_CENTER). Generally games are aware of the half-pixel offset, and " "having this enabled is the correct behavior (disabling this may " "significantly break post-processing in some games), but in certain games " "it might have been ignored, resulting in slight blurriness of UI " "textures, for instance, when they are read between texels rather than " "at texel centers, or the leftmost/topmost pixels may not be fully covered " "when MSAA is used with fullscreen passes.", "GPU"); DEFINE_int32(query_occlusion_sample_lower_threshold, 80, "If set to -1 no sample counts are written, games may hang. Else, " "the sample count of every tile will be incremented on every " "EVENT_WRITE_ZPD by this number. Setting this to 0 means " "everything is reported as occluded.", "GPU"); DEFINE_int32( query_occlusion_sample_upper_threshold, 100, "Set to higher number than query_occlusion_sample_lower_threshold. This " "value is ignored if query_occlusion_sample_lower_threshold is set to -1.", "GPU"); DEFINE_int32(anisotropic_override, -1, "Forces anisotropic filtering (AF) for eligible textures.\n" "Higher values keep textures sharper at oblique angles at the " "cost of GPU bandwidth, though most GPUs handle up to 16x fine.\n" "In rare cases, forcing AF can introduce visual artifacts.\n" " -1 = No override\n" " 0 = Disable anisotropic filtering\n" " 1 = Force 1x anisotropic filtering\n" " 2 = Force 2x anisotropic filtering\n" " 3 = Force 4x anisotropic filtering\n" " 4 = Force 8x anisotropic filtering\n" " 5 = Force 16x anisotropic filtering", "GPU"); DEFINE_bool(no_discard_stencil_in_transfer_pipelines, false, "Skip stencil bit discard in render target transfer pipelines. " "May improve performance on some GPUs.", "GPU"); DEFINE_bool(gpu_3d_to_2d_texture, true, "Handle shaders that sample 3D textures as 2D by creating a 2D " "texture from slice 0 of the guest memory.", "GPU"); DEFINE_bool( async_shader_compilation, true, "Compile shaders and create pipelines asynchronously in background " "threads. " "Eliminates shader compilation stutter but may cause brief rendering " "artifacts while pipelines are being created. When disabled, pipelines are " "created synchronously which causes stutter but no visual artifacts.", "GPU");