1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-14 00:48:44 +01:00
dxvk/src/dxbc/dxbc_options.h
Philip Rebohle d94d89c3ef
[dxbc] Add option to use subgroup ops for atomic counter operations
This can greatly reduce the number of atomic operations when using
append/consume buffers.
2019-05-15 18:49:02 +02:00

47 lines
1.4 KiB
C++

#pragma once
#include "../dxvk/dxvk_device.h"
namespace dxvk {
struct D3D11Options;
struct DxbcOptions {
DxbcOptions();
DxbcOptions(const Rc<DxvkDevice>& device, const D3D11Options& options);
// Clamp oDepth in fragment shaders if the depth
// clip device feature is not supported
bool useDepthClipWorkaround = false;
/// Use the ShaderImageReadWithoutFormat capability.
bool useStorageImageReadWithoutFormat = false;
/// Use subgroup operations to reduce the number of
/// atomic operations for append/consume buffers.
bool useSubgroupOpsForAtomicCounters = false;
/// Use subgroup operations to discard fragment
/// shader invocations if derivatives remain valid.
bool useSubgroupOpsForEarlyDiscard = false;
/// Use SSBOs instead of texel buffers
/// for raw and structured buffers.
bool useRawSsbo = false;
/// Use SDiv instead of SHR to converte byte offsets to
/// dword offsets. Fixes RE2 and DMC5 on Nvidia drivers.
bool useSdivForBufferIndex = false;
/// Enables sm4-compliant division-by-zero behaviour
bool strictDivision = false;
// Enables range checking for constant buffers.
// Fixes issues in some games, breaks others.
bool constantBufferRangeCheck = false;
/// Clear thread-group shared memory to zero
bool zeroInitWorkgroupMemory = false;
};
}