diff options
Diffstat (limited to 'src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_options.h')
-rw-r--r-- | src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_options.h | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_options.h b/src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_options.h new file mode 100644 index 00000000..e49bb61e --- /dev/null +++ b/src/libs/dxvk-native-1.9.2a/src/d3d9/d3d9_options.h @@ -0,0 +1,160 @@ +#pragma once + +#include "../util/config/config.h" +#include "../dxvk/dxvk_device.h" + +#include "d3d9_include.h" + +namespace dxvk { + + struct D3D9Options { + + D3D9Options(const Rc<DxvkDevice>& device, const Config& config); + + /// Override PCI vendor and device IDs reported to the + /// application. This may make apps think they are running + /// on a different GPU than they do and behave differently. + int32_t customVendorId; + int32_t customDeviceId; + std::string customDeviceDesc; + + /// Present interval. Overrides the value + /// in D3DPRESENT_PARAMS used in swapchain present. + int32_t presentInterval; + + /// Override maximum frame latency if the app specifies + /// a higher value. May help with frame timing issues. + int32_t maxFrameLatency; + + /// Limit frame rate + int32_t maxFrameRate; + + /// Set the max shader model the device can support in the caps. + int32_t shaderModel; + + /// Whether or not managed resources should stay in memory until unlock, or until manually evicted. + bool evictManagedOnUnlock; + + /// Whether or not to set the process as DPI aware in Windows when the API interface is created. + bool dpiAware; + + /// True: Copy our constant set into UBO if we are relative indexing ever. + /// False: Copy our constant set into UBO if we are relative indexing at the start of a defined constant + /// Why?: In theory, FXC should never generate code where this would be an issue. + bool strictConstantCopies; + + /// Whether or not we should care about pow(0, 0) = 1 + bool strictPow; + + /// Whether or not to do a fast path clear if we're close enough to the whole render target. + bool lenientClear; + + /// Back buffer count for the Vulkan swap chain. + /// Overrides buffer count in present parameters. + int32_t numBackBuffers; + + /// Don't create an explicit front buffer in our own swapchain. The Vulkan swapchain is unaffected. + /// Some games don't handle front/backbuffer flipping very well because they don't always redraw + /// each frame completely, and rely on old pixel data from the previous frame to still be there. + /// When this option is set and a game only requests one backbuffer, there will be no flipping in + /// our own swapchain, so the game will always draw to the same buffer and can rely on old pixel + /// data to still be there after a Present call. + /// This means that D3D9SwapChainEx::GetFrontBufferData returns data from the backbuffer of the + /// previous frame, which is the same as the current backbuffer if only 1 backbuffer was requested. + bool noExplicitFrontBuffer; + + /// Defer surface creation + bool deferSurfaceCreation; + + /// Whether to transition to general + /// for rendering hazards + bool generalHazards; + + /// Anisotropic filter override + /// + /// Enforces anisotropic filtering with the + /// given anisotropy value for all samplers. + int32_t samplerAnisotropy; + + /// Max available memory override + /// + /// Changes the max initial value used in + /// tracking and GetAvailableTextureMem + uint32_t maxAvailableMemory; + + /// D3D9 Floating Point Emulation (anything * 0 = 0) + bool d3d9FloatEmulation; + + /// Support the DF16 & DF24 texture format + bool supportDFFormats; + + /// Support X4R4G4B4 + bool supportX4R4G4B4; + + /// Support D32 + bool supportD32; + + /// SWVP Constant Limits + int32_t swvpFloatCount; + int32_t swvpIntCount; + int32_t swvpBoolCount; + + /// Disable D3DFMT_A8 for render targets. + /// Specifically to work around a game + /// bug in The Sims 2 that happens on native too! + bool disableA8RT; + + /// Work around a NV driver quirk + /// Fixes flickering/z-fighting in some games. + bool invariantPosition; + + /// Whether or not to respect memory tracking for + /// failing resource allocation. + bool memoryTrackTest; + + /// Support VCACHE query + bool supportVCache; + + /// Forced aspect ratio, disable other modes + std::string forceAspectRatio; + + /// Enable dialog mode (ie. no exclusive fullscreen) + bool enableDialogMode; + + /// Always use a spec constant to determine sampler type (instead of just in PS 1.x) + /// Works around a game bug in Halo CE where it gives cube textures to 2d/volume samplers + bool forceSamplerTypeSpecConstants; + + /// Forces an MSAA level on the swapchain + int32_t forceSwapchainMSAA; + + /// Allow D3DLOCK_DONOTWAIT + bool allowDoNotWait; + + /// Allow D3DLOCK_DISCARD + bool allowDiscard; + + /// Enumerate adapters by displays + bool enumerateByDisplays; + + /// Should we make our Mads a FFma or do it the long way with an FMul and an FAdd? + /// This solves some rendering bugs in games that have z-pass shaders which + /// don't match entirely to the regular vertex shader in this way. + bool longMad; + + /// Tear-free mode if vsync is disabled + /// Tearing mode if vsync is enabled + Tristate tearFree; + + /// Workaround for games using alpha test == 1.0, etc due to wonky interpolation or + /// misc. imprecision on some vendors + bool alphaTestWiggleRoom; + + /// Apitrace mode: Maps all buffers in cached memory. + bool apitraceMode; + + /// Use device local memory for constant buffers. + bool deviceLocalConstantBuffers; + }; + +}
\ No newline at end of file |