1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-18 20:52:10 +01:00

[dxvk] Remove extra pipeline state

This can be expressed with specialization constants now.
This commit is contained in:
Philip Rebohle 2019-05-06 00:18:59 +02:00
parent a0c67191a7
commit 7687db0303
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
12 changed files with 1 additions and 70 deletions

View File

@ -3121,17 +3121,6 @@ namespace dxvk {
});
}
void D3D11DeviceContext::ApplyUnusedState() {
// Initialize state that isn't exposed in D3D11
EmitCs([] (DxvkContext* ctx) {
DxvkExtraState xs;
xs.alphaCompareOp = VK_COMPARE_OP_ALWAYS;
ctx->setExtraState(xs);
});
}
void D3D11DeviceContext::BindShader(
DxbcProgramType ShaderStage,
@ -3577,7 +3566,6 @@ namespace dxvk {
ApplyStencilRef();
ApplyRasterizerState();
ApplyViewportState();
ApplyUnusedState();
BindDrawBuffers(
m_state.id.argBuffer.ptr(),

View File

@ -679,8 +679,6 @@ namespace dxvk {
void ApplyViewportState();
void ApplyUnusedState();
void BindShader(
DxbcProgramType ShaderStage,
const D3D11CommonShader* pShaderModule);

View File

@ -279,7 +279,6 @@ namespace dxvk {
m_context->setMultisampleState(m_msState);
m_context->setDepthStencilState(m_dsState);
m_context->setLogicOpState(m_loState);
m_context->setExtraState(m_xsState);
m_context->setBlendMode(0, m_blendMode);
m_context->setInputAssemblyState(m_iaState);
@ -615,8 +614,6 @@ namespace dxvk {
m_loState.enableLogicOp = VK_FALSE;
m_loState.logicOp = VK_LOGIC_OP_NO_OP;
m_xsState.alphaCompareOp = VK_COMPARE_OP_ALWAYS;
m_blendMode.enableBlending = VK_FALSE;
m_blendMode.colorSrcFactor = VK_BLEND_FACTOR_ONE;
m_blendMode.colorDstFactor = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA;

View File

@ -109,7 +109,6 @@ namespace dxvk {
DxvkMultisampleState m_msState;
DxvkDepthStencilState m_dsState;
DxvkLogicOpState m_loState;
DxvkExtraState m_xsState;
DxvkBlendMode m_blendMode;
D3D11Texture2D* m_backBuffer = nullptr;

View File

@ -204,16 +204,4 @@ namespace dxvk {
std::array<DxvkVertexBinding, DxvkLimits::MaxNumVertexBindings> bindings;
};
/**
* \brief Extra state
*
* Additional state that will be passed to
* the graphics pipeline as specialization
* constants.
*/
struct DxvkExtraState {
VkCompareOp alphaCompareOp;
};
}

View File

@ -2142,14 +2142,6 @@ namespace dxvk {
m_flags.set(DxvkContextFlag::GpDirtyPipelineState);
}
void DxvkContext::setExtraState(
const DxvkExtraState& xs) {
m_state.gp.state.xsAlphaCompareOp = xs.alphaCompareOp;
m_flags.set(DxvkContextFlag::GpDirtyPipelineState);
}
void DxvkContext::setPredicate(

View File

@ -856,13 +856,6 @@ namespace dxvk {
uint32_t attachment,
const DxvkBlendMode& blendMode);
/**
* \brief Sets extra pipeline state
* \param [in] xs New state object
*/
void setExtraState(
const DxvkExtraState& xs);
/**
* \brief Sets predicate
*

View File

@ -192,8 +192,6 @@ namespace dxvk {
// Set up some specialization constants
DxvkSpecConstants specData;
specData.set(uint32_t(DxvkSpecConstantId::RasterizerSampleCount), sampleCount, VK_SAMPLE_COUNT_1_BIT);
specData.set(uint32_t(DxvkSpecConstantId::AlphaTestEnable), state.xsAlphaCompareOp != VK_COMPARE_OP_ALWAYS, false);
specData.set(uint32_t(DxvkSpecConstantId::AlphaCompareOp), state.xsAlphaCompareOp, VK_COMPARE_OP_ALWAYS);
for (uint32_t i = 0; i < m_layout->bindingCount(); i++)
specData.set(i, state.bsBindingMask.isBound(i), true);

View File

@ -97,8 +97,6 @@ namespace dxvk {
uint32_t msSampleMask;
VkBool32 msEnableAlphaToCoverage;
VkCompareOp xsAlphaCompareOp;
VkBool32 dsEnableDepthTest;
VkBool32 dsEnableDepthWrite;
VkBool32 dsEnableDepthBoundsTest;

View File

@ -30,13 +30,7 @@ namespace dxvk {
// Specialization constants for pipeline state
SpecConstantRangeStart = ColorComponentMappings + MaxNumRenderTargets * 4,
RasterizerSampleCount = SpecConstantRangeStart + 0,
AlphaTestEnable,
AlphaCompareOp,
/// Lowest and highest known spec constant IDs
SpecConstantIdMin = RasterizerSampleCount,
SpecConstantIdMax = AlphaCompareOp,
RasterizerSampleCount = SpecConstantRangeStart,
};

View File

@ -309,7 +309,6 @@ namespace dxvk {
if (readCacheEntry(ifile, entry)) {
switch (curHeader.version) {
case 2: convertEntryV2(entry); /* fall through */
case 3: convertEntryV3(entry); /* fall through */
}
size_t entryId = m_entries.size();
@ -406,16 +405,6 @@ namespace dxvk {
}
bool DxvkStateCache::convertEntryV3(
DxvkStateCacheEntry& entry) const {
// Semantics changed:
// v3: Unused, always set to 0
// v4: Alpha test compare op
entry.gpState.xsAlphaCompareOp = VK_COMPARE_OP_ALWAYS;
return true;
}
void DxvkStateCache::workerFunc() {
env::setThreadName("dxvk-shader");

View File

@ -213,9 +213,6 @@ namespace dxvk {
bool convertEntryV2(
DxvkStateCacheEntry& entry) const;
bool convertEntryV3(
DxvkStateCacheEntry& entry) const;
void workerFunc();
void writerFunc();