117 lines
5.1 KiB
C++
117 lines
5.1 KiB
C++
/**
|
|
******************************************************************************
|
|
* 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_querybatch_range, 0,
|
|
"Range of fake ZPD sample count values to cycle for titles that "
|
|
"use D3D QueryBatch. 0 disables this behavior entirely. Any non-"
|
|
"zero values should only be used if required for specific titles.",
|
|
"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");
|
|
|
|
DEFINE_bool(
|
|
ac6_ground_fix, false,
|
|
"This fixes(hide) issues with black ground in AC6. Use only in AC6. "
|
|
"Might cause issues in other titles.",
|
|
"HACKS");
|