Remove MVKCommandEncoderState::reset().
MVKCommandEncoderState has numerous subclasses, and the polymorphic
MVKCommandEncoderState::resetImpl() requires significant maintenance
across these subclasses. It's only use was in disabling depth-stencil state.
Remove MVKCommandEncoderState::reset() and all implementations of resetImpl()
across all MVKCommandEncoderState subclasses.
Remove MVKPipeline::__hasDepthStencilInfo and disable depth-stencil state
automatically via cleared Vulkan struct in MVKPipeline.
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h
index d488932..41e4544 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h
@@ -83,23 +83,11 @@
encodeImpl(stage);
}
- /**
- * Marks this instance as dirty and calls resetImpl() function to reset this instance
- * back to initial state. Subclasses must override the resetImpl() function.
- */
- void reset() {
- _isDirty = true;
- _isModified = false;
-
- resetImpl();
- }
-
/** Constructs this instance for the specified command encoder. */
MVKCommandEncoderState(MVKCommandEncoder* cmdEncoder) : _cmdEncoder(cmdEncoder) {}
protected:
virtual void encodeImpl(uint32_t stage) = 0;
- virtual void resetImpl() = 0;
MVKCommandEncoder* _cmdEncoder;
bool _isDirty = false;
@@ -127,7 +115,6 @@
protected:
void encodeImpl(uint32_t stage) override;
- void resetImpl() override;
MVKPipeline* _pipeline = nullptr;
};
@@ -156,7 +143,6 @@
protected:
void encodeImpl(uint32_t stage) override;
- void resetImpl() override;
MVKSmallVector<VkViewport, kMVKCachedViewportScissorCount> _viewports, _dynamicViewports;
};
@@ -185,7 +171,6 @@
protected:
void encodeImpl(uint32_t stage) override;
- void resetImpl() override;
MVKSmallVector<VkRect2D, kMVKCachedViewportScissorCount> _scissors, _dynamicScissors;
};
@@ -212,7 +197,6 @@
protected:
void encodeImpl(uint32_t stage) override;
- void resetImpl() override;
bool isTessellating();
MVKSmallVector<char, 128> _pushConstants;
@@ -252,7 +236,6 @@
protected:
void encodeImpl(uint32_t stage) override;
- void resetImpl() override;
void setStencilState(MVKMTLStencilDescriptorData& stencilInfo,
const VkStencilOpState& vkStencil,
bool enabled);
@@ -283,7 +266,6 @@
protected:
void encodeImpl(uint32_t stage) override;
- void resetImpl() override;
uint32_t _frontFaceValue = 0;
uint32_t _backFaceValue = 0;
@@ -312,7 +294,6 @@
protected:
void encodeImpl(uint32_t stage) override;
- void resetImpl() override;
float _depthBiasConstantFactor = 0;
float _depthBiasClamp = 0;
@@ -340,7 +321,6 @@
protected:
void encodeImpl(uint32_t stage) override;
- void resetImpl() override;
float _red = 0;
float _green = 0;
@@ -440,23 +420,6 @@
bool areSamplerStateBindingsDirty = false;
bool needsSwizzle = false;
-
- void reset() {
- bufferBindings.clear();
- textureBindings.clear();
- samplerStateBindings.clear();
- swizzleConstants.clear();
- bufferSizes.clear();
-
- areBufferBindingsDirty = false;
- areTextureBindingsDirty = false;
- areSamplerStateBindingsDirty = false;
- swizzleBufferBinding.isDirty = false;
- bufferSizeBufferBinding.isDirty = false;
- viewRangeBufferBinding.isDirty = false;
-
- needsSwizzle = false;
- }
};
};
@@ -524,7 +487,6 @@
protected:
void encodeImpl(uint32_t stage) override;
- void resetImpl() override;
void markDirty() override;
ResourceBindings<8> _shaderStageResourceBindings[4];
@@ -563,7 +525,6 @@
protected:
void encodeImpl(uint32_t) override;
- void resetImpl() override;
ResourceBindings<4> _resourceBindings;
};
@@ -589,7 +550,6 @@
protected:
void encodeImpl(uint32_t) override;
- void resetImpl() override;
MTLVisibilityResultMode _mtlVisibilityResultMode = MTLVisibilityResultModeDisabled;
NSUInteger _mtlVisibilityResultOffset = 0;
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm
index 4919d21..968d087 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm
@@ -49,10 +49,6 @@
}
}
-void MVKPipelineCommandEncoderState::resetImpl() {
- _pipeline = nullptr;
-}
-
#pragma mark -
#pragma mark MVKViewportCommandEncoderState
@@ -103,11 +99,6 @@
}
}
-void MVKViewportCommandEncoderState::resetImpl() {
- _viewports.clear();
- _dynamicViewports.clear();
-}
-
#pragma mark -
#pragma mark MVKScissorCommandEncoderState
@@ -158,11 +149,6 @@
}
}
-void MVKScissorCommandEncoderState::resetImpl() {
- _scissors.clear();
- _dynamicScissors.clear();
-}
-
#pragma mark -
#pragma mark MVKPushConstantsCommandEncoderState
@@ -255,10 +241,6 @@
return gp ? gp->isTessellationPipeline() : false;
}
-void MVKPushConstantsCommandEncoderState::resetImpl() {
- _pushConstants.clear();
-}
-
#pragma mark -
#pragma mark MVKDepthStencilCommandEncoderState
@@ -363,12 +345,6 @@
}
}
-void MVKDepthStencilCommandEncoderState::resetImpl() {
- _depthStencilData = kMVKMTLDepthStencilDescriptorDataDefault;
- _hasDepthAttachment = false;
- _hasStencilAttachment = false;
-}
-
#pragma mark -
#pragma mark MVKStencilReferenceValueCommandEncoderState
@@ -406,11 +382,6 @@
backReferenceValue: _backFaceValue];
}
-void MVKStencilReferenceValueCommandEncoderState::resetImpl() {
- _frontFaceValue = 0;
- _backFaceValue = 0;
-}
-
#pragma mark -
#pragma mark MVKDepthBiasCommandEncoderState
@@ -453,13 +424,6 @@
}
}
-void MVKDepthBiasCommandEncoderState::resetImpl() {
- _depthBiasConstantFactor = 0;
- _depthBiasClamp = 0;
- _depthBiasSlopeFactor = 0;
- _isEnabled = false;
-}
-
#pragma mark -
#pragma mark MVKBlendColorCommandEncoderState
@@ -484,13 +448,6 @@
[_cmdEncoder->_mtlRenderEncoder setBlendColorRed: _red green: _green blue: _blue alpha: _alpha];
}
-void MVKBlendColorCommandEncoderState::resetImpl() {
- _red = 0;
- _green = 0;
- _blue = 0;
- _alpha = 0;
-}
-
#pragma mark -
#pragma mark MVKResourcesCommandEncoderState
@@ -808,12 +765,6 @@
}
}
-void MVKGraphicsResourcesCommandEncoderState::resetImpl() {
- for (uint32_t i = kMVKShaderStageVertex; i <= kMVKShaderStageFragment; i++) {
- _shaderStageResourceBindings[i].reset();
- }
-}
-
#pragma mark -
#pragma mark MVKComputeResourcesCommandEncoderState
@@ -908,10 +859,6 @@
});
}
-void MVKComputeResourcesCommandEncoderState::resetImpl() {
- _resourceBindings.reset();
-}
-
#pragma mark -
#pragma mark MVKOcclusionQueryCommandEncoderState
@@ -966,9 +913,3 @@
[_cmdEncoder->_mtlRenderEncoder setVisibilityResultMode: _mtlVisibilityResultMode
offset: _mtlVisibilityResultOffset];
}
-
-void MVKOcclusionQueryCommandEncoderState::resetImpl() {
- _mtlVisibilityResultMode = MTLVisibilityResultModeDisabled;
- _mtlVisibilityResultOffset = 0;
- _mtlRenderPassQueries.clear();
-}
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h
index 2fd7020..cdef884 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h
@@ -338,7 +338,6 @@
uint32_t _tessCtlLevelBufferIndex = 0;
bool _dynamicStateEnabled[kMVKVkDynamicStateCount];
- bool _hasDepthStencilInfo;
bool _needsVertexSwizzleBuffer = false;
bool _needsVertexBufferSizeBuffer = false;
bool _needsVertexViewRangeBuffer = false;
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm
index 262c8c8..873729e 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm
@@ -241,14 +241,9 @@
[mtlCmdEnc setRenderPipelineState: _mtlPipelineState];
}
- // Depth stencil state
- if (_hasDepthStencilInfo) {
- cmdEncoder->_depthStencilState.setDepthStencilState(_depthStencilInfo);
- cmdEncoder->_stencilReferenceValueState.setReferenceValues(_depthStencilInfo);
- } else {
- cmdEncoder->_depthStencilState.reset();
- cmdEncoder->_stencilReferenceValueState.reset();
- }
+ // Depth stencil state - Cleared _depthStencilInfo values will disable depth testing
+ cmdEncoder->_depthStencilState.setDepthStencilState(_depthStencilInfo);
+ cmdEncoder->_stencilReferenceValueState.setReferenceValues(_depthStencilInfo);
// Rasterization
cmdEncoder->_blendColorState.setBlendColor(_blendConstants[0], _blendConstants[1],
@@ -418,8 +413,8 @@
// Render pipeline state
initMTLRenderPipelineState(pCreateInfo, reflectData);
- // Depth stencil content
- _hasDepthStencilInfo = mvkSetOrClear(&_depthStencilInfo, pCreateInfo->pDepthStencilState);
+ // Depth stencil content - clearing will disable depth and stencil testing
+ mvkSetOrClear(&_depthStencilInfo, pCreateInfo->pDepthStencilState);
// Viewports and scissors
auto pVPState = pCreateInfo->pViewportState;