2018-01-07 19:05:27 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "../dxvk/dxvk_device.h"
|
|
|
|
|
|
|
|
namespace dxvk {
|
2018-11-23 15:11:46 +00:00
|
|
|
|
|
|
|
struct D3D11Options;
|
2021-01-28 14:54:36 +00:00
|
|
|
|
|
|
|
enum class DxbcFloatControlFlag : uint32_t {
|
|
|
|
DenormFlushToZero32,
|
|
|
|
DenormPreserve64,
|
|
|
|
PreserveNan32,
|
|
|
|
PreserveNan64,
|
|
|
|
};
|
|
|
|
|
|
|
|
using DxbcFloatControlFlags = Flags<DxbcFloatControlFlag>;
|
|
|
|
|
2018-11-09 07:41:02 +00:00
|
|
|
struct DxbcOptions {
|
|
|
|
DxbcOptions();
|
2018-11-23 15:11:46 +00:00
|
|
|
DxbcOptions(const Rc<DxvkDevice>& device, const D3D11Options& options);
|
2018-11-09 07:41:02 +00:00
|
|
|
|
2019-02-19 13:27:21 +00:00
|
|
|
// Clamp oDepth in fragment shaders if the depth
|
|
|
|
// clip device feature is not supported
|
|
|
|
bool useDepthClipWorkaround = false;
|
|
|
|
|
2022-08-17 13:37:18 +01:00
|
|
|
/// Determines whether format qualifiers
|
|
|
|
/// on typed UAV loads are required
|
|
|
|
bool supportsTypedUavLoadR32 = false;
|
2018-11-07 10:57:36 +00:00
|
|
|
|
2024-02-16 18:47:35 +00:00
|
|
|
/// Determines whether raw access chains are supported
|
|
|
|
bool supportsRawAccessChains = false;
|
|
|
|
|
2018-11-23 14:57:54 +00:00
|
|
|
/// Clear thread-group shared memory to zero
|
|
|
|
bool zeroInitWorkgroupMemory = false;
|
2019-06-05 00:09:39 +01:00
|
|
|
|
2020-01-22 22:58:36 +00:00
|
|
|
/// Declare vertex positions as invariant
|
|
|
|
bool invariantPosition = false;
|
|
|
|
|
2020-02-07 21:47:06 +00:00
|
|
|
/// Insert memory barriers after TGSM stoes
|
2022-09-09 12:59:58 +01:00
|
|
|
bool forceVolatileTgsmAccess = false;
|
2020-02-07 21:47:06 +00:00
|
|
|
|
2021-07-02 03:36:50 +01:00
|
|
|
/// Replace ld_ms with ld
|
|
|
|
bool disableMsaa = false;
|
|
|
|
|
2023-01-07 23:51:13 +00:00
|
|
|
/// Force sample rate shading by using sample
|
|
|
|
/// interpolation for fragment shader inputs
|
|
|
|
bool forceSampleRateShading = false;
|
|
|
|
|
2022-09-17 21:38:28 +01:00
|
|
|
// Enable per-sample interlock if supported
|
|
|
|
bool enableSampleShadingInterlock = false;
|
|
|
|
|
2021-01-28 14:54:36 +00:00
|
|
|
/// Float control flags
|
|
|
|
DxbcFloatControlFlags floatControl;
|
|
|
|
|
2019-06-05 00:09:39 +01:00
|
|
|
/// Minimum storage buffer alignment
|
|
|
|
VkDeviceSize minSsboAlignment = 0;
|
2024-04-27 14:42:25 +01:00
|
|
|
|
|
|
|
/// Should we make our Mads a FFma or do it the long way with an FMul and an FAdd?
|
|
|
|
bool longMad;
|
2018-04-22 22:49:41 +01:00
|
|
|
};
|
|
|
|
|
2018-01-07 19:05:27 +00:00
|
|
|
}
|