1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-19 05:52:11 +01:00

[d3d11] Move handling of constantBufferRangeCheck option to D3D11Options

This commit is contained in:
Philip Rebohle 2019-10-30 10:57:36 +01:00
parent 9e084e63ca
commit e95bc3256f
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
4 changed files with 11 additions and 7 deletions

View File

@ -38,7 +38,7 @@ namespace dxvk {
m_dxvkDevice (pContainer->GetDXVKDevice()),
m_dxvkAdapter (m_dxvkDevice->adapter()),
m_d3d11Formats (m_dxvkAdapter),
m_d3d11Options (m_dxvkAdapter->instance()->config()),
m_d3d11Options (m_dxvkAdapter->instance()->config(), m_dxvkDevice),
m_dxbcOptions (m_dxvkDevice, m_d3d11Options) {
m_initializer = new D3D11Initializer(this);
m_context = new D3D11ImmediateContext(this, m_dxvkDevice);

View File

@ -4,11 +4,12 @@
namespace dxvk {
D3D11Options::D3D11Options(const Config& config) {
D3D11Options::D3D11Options(const Config& config, const Rc<DxvkDevice>& device) {
const DxvkDeviceInfo& devInfo = device->properties();
this->allowMapFlagNoWait = config.getOption<bool>("d3d11.allowMapFlagNoWait", true);
this->dcSingleUseMode = config.getOption<bool>("d3d11.dcSingleUseMode", true);
this->strictDivision = config.getOption<bool>("d3d11.strictDivision", false);
this->constantBufferRangeCheck = config.getOption<bool>("d3d11.constantBufferRangeCheck", false);
this->zeroInitWorkgroupMemory = config.getOption<bool>("d3d11.zeroInitWorkgroupMemory", false);
this->relaxedBarriers = config.getOption<bool>("d3d11.relaxedBarriers", false);
this->maxTessFactor = config.getOption<int32_t>("d3d11.maxTessFactor", 0);
@ -18,6 +19,9 @@ namespace dxvk {
this->maxFrameLatency = config.getOption<int32_t>("dxgi.maxFrameLatency", 0);
this->syncInterval = config.getOption<int32_t>("dxgi.syncInterval", -1);
this->constantBufferRangeCheck = config.getOption<bool>("d3d11.constantBufferRangeCheck", false)
&& DxvkGpuVendor(devInfo.core.properties.vendorID) != DxvkGpuVendor::Amd;
bool apitraceAttached = false;
#ifndef __WINE__
apitraceAttached = ::GetModuleHandle("dxgitrace.dll") != nullptr;

View File

@ -4,12 +4,14 @@
#include "../dxgi/dxgi_options.h"
#include "../dxvk/dxvk_device.h"
#include "d3d11_include.h"
namespace dxvk {
struct D3D11Options {
D3D11Options(const Config& config);
D3D11Options(const Config& config, const Rc<DxvkDevice>& device);
/// Handle D3D11_MAP_FLAG_DO_NOT_WAIT properly.
///
/// This can offer substantial speedups, but some games

View File

@ -39,9 +39,7 @@ namespace dxvk {
strictDivision = options.strictDivision;
zeroInitWorkgroupMemory = options.zeroInitWorkgroupMemory;
if (DxvkGpuVendor(devInfo.core.properties.vendorID) != DxvkGpuVendor::Amd)
dynamicIndexedConstantBufferAsSsbo = options.constantBufferRangeCheck;
dynamicIndexedConstantBufferAsSsbo = options.constantBufferRangeCheck;
// Disable early discard on RADV (with LLVM) due to GPU hangs
// Disable early discard on Nvidia because it may hurt performance