#include #include "dxbc_options.h" namespace dxvk { const static std::unordered_map g_dxbcAppOptions = {{ { "ManiaPlanet.exe", DxbcOption::ForceTex2DArray }, }}; DxbcOptions getDxbcAppOptions(const std::string& appName) { auto appOptions = g_dxbcAppOptions.find(appName); return appOptions != g_dxbcAppOptions.end() ? appOptions->second : DxbcOptions(); } DxbcOptions getDxbcDeviceOptions(const Rc& device) { DxbcOptions flags; const VkPhysicalDeviceProperties devProps = device->adapter()->deviceProperties(); const VkPhysicalDeviceFeatures devFeatures = device->features(); const DxvkGpuVendor vendor = static_cast(devProps.vendorID); if (vendor == DxvkGpuVendor::Nvidia) { flags.set( DxbcOption::AddExtraDrefCoordComponent, DxbcOption::UseSimpleMinMaxClamp); } if (devFeatures.shaderStorageImageReadWithoutFormat) flags.set(DxbcOption::UseStorageImageReadWithoutFormat); return flags; } }