mirror of
https://github.com/doitsujin/dxvk.git
synced 2024-12-03 22:24:13 +01:00
[dxvk] Remove conditional rendering from backend
Was disabled anyway due to being broken on various drivers, so let's get rid of it.
This commit is contained in:
parent
34e730fe41
commit
0ce5dd8b03
@ -226,8 +226,6 @@ namespace dxvk {
|
|||||||
|| !required.ext4444Formats.formatA4R4G4B4)
|
|| !required.ext4444Formats.formatA4R4G4B4)
|
||||||
&& (m_deviceFeatures.ext4444Formats.formatA4B4G4R4
|
&& (m_deviceFeatures.ext4444Formats.formatA4B4G4R4
|
||||||
|| !required.ext4444Formats.formatA4B4G4R4)
|
|| !required.ext4444Formats.formatA4B4G4R4)
|
||||||
&& (m_deviceFeatures.extConditionalRendering.conditionalRendering
|
|
||||||
|| !required.extConditionalRendering.conditionalRendering)
|
|
||||||
&& (m_deviceFeatures.extCustomBorderColor.customBorderColors
|
&& (m_deviceFeatures.extCustomBorderColor.customBorderColors
|
||||||
|| !required.extCustomBorderColor.customBorderColors)
|
|| !required.extCustomBorderColor.customBorderColors)
|
||||||
&& (m_deviceFeatures.extCustomBorderColor.customBorderColorWithoutFormat
|
&& (m_deviceFeatures.extCustomBorderColor.customBorderColorWithoutFormat
|
||||||
@ -265,11 +263,10 @@ namespace dxvk {
|
|||||||
DxvkDeviceFeatures enabledFeatures) {
|
DxvkDeviceFeatures enabledFeatures) {
|
||||||
DxvkDeviceExtensions devExtensions;
|
DxvkDeviceExtensions devExtensions;
|
||||||
|
|
||||||
std::array<DxvkExt*, 24> devExtensionList = {{
|
std::array<DxvkExt*, 23> devExtensionList = {{
|
||||||
&devExtensions.amdMemoryOverallocationBehaviour,
|
&devExtensions.amdMemoryOverallocationBehaviour,
|
||||||
&devExtensions.amdShaderFragmentMask,
|
&devExtensions.amdShaderFragmentMask,
|
||||||
&devExtensions.ext4444Formats,
|
&devExtensions.ext4444Formats,
|
||||||
&devExtensions.extConditionalRendering,
|
|
||||||
&devExtensions.extCustomBorderColor,
|
&devExtensions.extCustomBorderColor,
|
||||||
&devExtensions.extDepthClipEnable,
|
&devExtensions.extDepthClipEnable,
|
||||||
&devExtensions.extExtendedDynamicState,
|
&devExtensions.extExtendedDynamicState,
|
||||||
@ -333,11 +330,6 @@ namespace dxvk {
|
|||||||
enabledFeatures.ext4444Formats.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.ext4444Formats);
|
enabledFeatures.ext4444Formats.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.ext4444Formats);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (devExtensions.extConditionalRendering) {
|
|
||||||
enabledFeatures.extConditionalRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
|
|
||||||
enabledFeatures.extConditionalRendering.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extConditionalRendering);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (devExtensions.extCustomBorderColor) {
|
if (devExtensions.extCustomBorderColor) {
|
||||||
enabledFeatures.extCustomBorderColor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
|
enabledFeatures.extCustomBorderColor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
|
||||||
enabledFeatures.extCustomBorderColor.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extCustomBorderColor);
|
enabledFeatures.extCustomBorderColor.pNext = std::exchange(enabledFeatures.core.pNext, &enabledFeatures.extCustomBorderColor);
|
||||||
@ -584,11 +576,6 @@ namespace dxvk {
|
|||||||
m_deviceFeatures.ext4444Formats.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.ext4444Formats);
|
m_deviceFeatures.ext4444Formats.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.ext4444Formats);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_deviceExtensions.supports(VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME)) {
|
|
||||||
m_deviceFeatures.extConditionalRendering.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
|
|
||||||
m_deviceFeatures.extConditionalRendering.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extConditionalRendering);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_deviceExtensions.supports(VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME)) {
|
if (m_deviceExtensions.supports(VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME)) {
|
||||||
m_deviceFeatures.extCustomBorderColor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
|
m_deviceFeatures.extCustomBorderColor.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
|
||||||
m_deviceFeatures.extCustomBorderColor.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extCustomBorderColor);
|
m_deviceFeatures.extCustomBorderColor.pNext = std::exchange(m_deviceFeatures.core.pNext, &m_deviceFeatures.extCustomBorderColor);
|
||||||
@ -700,8 +687,6 @@ namespace dxvk {
|
|||||||
"\n shaderFloat64 : ", features.core.features.shaderFloat64 ? "1" : "0",
|
"\n shaderFloat64 : ", features.core.features.shaderFloat64 ? "1" : "0",
|
||||||
"\n shaderInt64 : ", features.core.features.shaderInt64 ? "1" : "0",
|
"\n shaderInt64 : ", features.core.features.shaderInt64 ? "1" : "0",
|
||||||
"\n variableMultisampleRate : ", features.core.features.variableMultisampleRate ? "1" : "0",
|
"\n variableMultisampleRate : ", features.core.features.variableMultisampleRate ? "1" : "0",
|
||||||
"\n", VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME,
|
|
||||||
"\n conditionalRendering : ", features.extConditionalRendering.conditionalRendering ? "1" : "0",
|
|
||||||
"\n", VK_EXT_4444_FORMATS_EXTENSION_NAME,
|
"\n", VK_EXT_4444_FORMATS_EXTENSION_NAME,
|
||||||
"\n formatA4R4G4B4 : ", features.ext4444Formats.formatA4R4G4B4 ? "1" : "0",
|
"\n formatA4R4G4B4 : ", features.ext4444Formats.formatA4R4G4B4 ? "1" : "0",
|
||||||
"\n formatA4B4G4R4 : ", features.ext4444Formats.formatA4B4G4R4 ? "1" : "0",
|
"\n formatA4B4G4R4 : ", features.ext4444Formats.formatA4B4G4R4 ? "1" : "0",
|
||||||
|
@ -2347,28 +2347,6 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::setPredicate(
|
|
||||||
const DxvkBufferSlice& predicate,
|
|
||||||
VkConditionalRenderingFlagsEXT flags) {
|
|
||||||
if (!m_state.cond.predicate.matches(predicate)) {
|
|
||||||
m_state.cond.predicate = predicate;
|
|
||||||
|
|
||||||
if (m_predicateWrites.find(predicate.getSliceHandle())
|
|
||||||
!= m_predicateWrites.end()) {
|
|
||||||
spillRenderPass();
|
|
||||||
commitPredicateUpdates();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_flags.set(DxvkContextFlag::GpDirtyPredicate);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_state.cond.flags != flags) {
|
|
||||||
m_state.cond.flags = flags;
|
|
||||||
m_flags.set(DxvkContextFlag::GpDirtyPredicate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::setBarrierControl(DxvkBarrierControlFlags control) {
|
void DxvkContext::setBarrierControl(DxvkBarrierControlFlags control) {
|
||||||
m_barrierControl = control;
|
m_barrierControl = control;
|
||||||
}
|
}
|
||||||
@ -2387,21 +2365,6 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::writePredicate(
|
|
||||||
const DxvkBufferSlice& predicate,
|
|
||||||
const Rc<DxvkGpuQuery>& query) {
|
|
||||||
DxvkBufferSliceHandle predicateHandle = predicate.getSliceHandle();
|
|
||||||
DxvkGpuQueryHandle queryHandle = query->handle();
|
|
||||||
|
|
||||||
if (m_flags.test(DxvkContextFlag::GpRenderPassBound))
|
|
||||||
m_predicateWrites.insert({ predicateHandle, queryHandle });
|
|
||||||
else
|
|
||||||
updatePredicate(predicateHandle, queryHandle);
|
|
||||||
|
|
||||||
m_cmd->trackResource<DxvkAccess::Write>(predicate.buffer());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::writeTimestamp(const Rc<DxvkGpuQuery>& query) {
|
void DxvkContext::writeTimestamp(const Rc<DxvkGpuQuery>& query) {
|
||||||
m_queryManager.writeTimestamp(m_cmd, query);
|
m_queryManager.writeTimestamp(m_cmd, query);
|
||||||
}
|
}
|
||||||
@ -3400,30 +3363,6 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::updatePredicate(
|
|
||||||
const DxvkBufferSliceHandle& predicate,
|
|
||||||
const DxvkGpuQueryHandle& query) {
|
|
||||||
m_cmd->cmdCopyQueryPoolResults(
|
|
||||||
query.queryPool, query.queryId, 1,
|
|
||||||
predicate.handle, predicate.offset, sizeof(uint32_t),
|
|
||||||
VK_QUERY_RESULT_WAIT_BIT);
|
|
||||||
|
|
||||||
m_execBarriers.accessBuffer(predicate,
|
|
||||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
|
||||||
VK_ACCESS_TRANSFER_WRITE_BIT,
|
|
||||||
VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT,
|
|
||||||
VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::commitPredicateUpdates() {
|
|
||||||
for (const auto& update : m_predicateWrites)
|
|
||||||
updatePredicate(update.first, update.second);
|
|
||||||
|
|
||||||
m_predicateWrites.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::startRenderPass() {
|
void DxvkContext::startRenderPass() {
|
||||||
if (!m_flags.test(DxvkContextFlag::GpRenderPassBound)) {
|
if (!m_flags.test(DxvkContextFlag::GpRenderPassBound)) {
|
||||||
this->flushClears(true);
|
this->flushClears(true);
|
||||||
@ -3466,7 +3405,6 @@ namespace dxvk {
|
|||||||
m_gfxBarriers.reset();
|
m_gfxBarriers.reset();
|
||||||
|
|
||||||
this->unbindGraphicsPipeline();
|
this->unbindGraphicsPipeline();
|
||||||
this->commitPredicateUpdates();
|
|
||||||
|
|
||||||
m_flags.clr(DxvkContextFlag::GpDirtyXfbCounters);
|
m_flags.clr(DxvkContextFlag::GpDirtyXfbCounters);
|
||||||
} else if (flushClears) {
|
} else if (flushClears) {
|
||||||
@ -3577,33 +3515,6 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::startConditionalRendering() {
|
|
||||||
if (!m_flags.test(DxvkContextFlag::GpCondActive)) {
|
|
||||||
m_flags.set(DxvkContextFlag::GpCondActive);
|
|
||||||
|
|
||||||
auto predicateSlice = m_state.cond.predicate.getSliceHandle();
|
|
||||||
|
|
||||||
VkConditionalRenderingBeginInfoEXT info;
|
|
||||||
info.sType = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT;
|
|
||||||
info.pNext = nullptr;
|
|
||||||
info.buffer = predicateSlice.handle;
|
|
||||||
info.offset = predicateSlice.offset;
|
|
||||||
info.flags = m_state.cond.flags;
|
|
||||||
|
|
||||||
m_cmd->cmdBeginConditionalRendering(&info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::pauseConditionalRendering() {
|
|
||||||
if (m_flags.test(DxvkContextFlag::GpCondActive)) {
|
|
||||||
m_flags.clr(DxvkContextFlag::GpCondActive);
|
|
||||||
|
|
||||||
m_cmd->cmdEndConditionalRendering();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::startTransformFeedback() {
|
void DxvkContext::startTransformFeedback() {
|
||||||
if (!m_flags.test(DxvkContextFlag::GpXfbActive)) {
|
if (!m_flags.test(DxvkContextFlag::GpXfbActive)) {
|
||||||
m_flags.set(DxvkContextFlag::GpXfbActive);
|
m_flags.set(DxvkContextFlag::GpXfbActive);
|
||||||
@ -3719,8 +3630,7 @@ namespace dxvk {
|
|||||||
DxvkContextFlag::GpDirtyStencilRef,
|
DxvkContextFlag::GpDirtyStencilRef,
|
||||||
DxvkContextFlag::GpDirtyViewport,
|
DxvkContextFlag::GpDirtyViewport,
|
||||||
DxvkContextFlag::GpDirtyDepthBias,
|
DxvkContextFlag::GpDirtyDepthBias,
|
||||||
DxvkContextFlag::GpDirtyDepthBounds,
|
DxvkContextFlag::GpDirtyDepthBounds);
|
||||||
DxvkContextFlag::GpDirtyPredicate);
|
|
||||||
|
|
||||||
m_gpActivePipeline = VK_NULL_HANDLE;
|
m_gpActivePipeline = VK_NULL_HANDLE;
|
||||||
}
|
}
|
||||||
@ -4178,16 +4088,6 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::updateConditionalRendering() {
|
|
||||||
m_flags.clr(DxvkContextFlag::GpDirtyPredicate);
|
|
||||||
|
|
||||||
pauseConditionalRendering();
|
|
||||||
|
|
||||||
if (m_state.cond.predicate.defined())
|
|
||||||
startConditionalRendering();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DxvkContext::updateDynamicState() {
|
void DxvkContext::updateDynamicState() {
|
||||||
if (!m_gpActivePipeline)
|
if (!m_gpActivePipeline)
|
||||||
return;
|
return;
|
||||||
@ -4325,9 +4225,6 @@ namespace dxvk {
|
|||||||
if (m_state.gp.flags.test(DxvkGraphicsPipelineFlag::HasTransformFeedback))
|
if (m_state.gp.flags.test(DxvkGraphicsPipelineFlag::HasTransformFeedback))
|
||||||
this->updateTransformFeedbackState();
|
this->updateTransformFeedbackState();
|
||||||
|
|
||||||
if (m_flags.test(DxvkContextFlag::GpDirtyPredicate))
|
|
||||||
this->updateConditionalRendering();
|
|
||||||
|
|
||||||
if (m_flags.any(
|
if (m_flags.any(
|
||||||
DxvkContextFlag::GpDirtyViewport,
|
DxvkContextFlag::GpDirtyViewport,
|
||||||
DxvkContextFlag::GpDirtyBlendConstants,
|
DxvkContextFlag::GpDirtyBlendConstants,
|
||||||
|
@ -936,21 +936,6 @@ namespace dxvk {
|
|||||||
uint32_t index,
|
uint32_t index,
|
||||||
uint32_t value);
|
uint32_t value);
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Sets predicate
|
|
||||||
*
|
|
||||||
* Enables or disables conditional rendering,
|
|
||||||
* depending on whether the given buffer slice
|
|
||||||
* is defined or not. Draw calls and render
|
|
||||||
* target clear commands will get discarded if
|
|
||||||
* the predicate value is either zero or non-zero.
|
|
||||||
* \param [in] predicate The predicate buffer
|
|
||||||
* \param [in] flags Conditional rendering mode
|
|
||||||
*/
|
|
||||||
void setPredicate(
|
|
||||||
const DxvkBufferSlice& predicate,
|
|
||||||
VkConditionalRenderingFlagsEXT flags);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Sets barrier control flags
|
* \brief Sets barrier control flags
|
||||||
*
|
*
|
||||||
@ -968,18 +953,6 @@ namespace dxvk {
|
|||||||
void signalGpuEvent(
|
void signalGpuEvent(
|
||||||
const Rc<DxvkGpuEvent>& event);
|
const Rc<DxvkGpuEvent>& event);
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Copies query data to predicate buffer
|
|
||||||
*
|
|
||||||
* The given buffer slice can then be passed
|
|
||||||
* to \c setPredicate to enable predication.
|
|
||||||
* \param [in] predicate Predicate buffer
|
|
||||||
* \param [in] query Source query
|
|
||||||
*/
|
|
||||||
void writePredicate(
|
|
||||||
const DxvkBufferSlice& predicate,
|
|
||||||
const Rc<DxvkGpuQuery>& query);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Writes to a timestamp query
|
* \brief Writes to a timestamp query
|
||||||
* \param [in] query The timestamp query
|
* \param [in] query The timestamp query
|
||||||
@ -1048,11 +1021,6 @@ namespace dxvk {
|
|||||||
std::array<DxvkGraphicsPipeline*, 4096> m_gpLookupCache = { };
|
std::array<DxvkGraphicsPipeline*, 4096> m_gpLookupCache = { };
|
||||||
std::array<DxvkComputePipeline*, 256> m_cpLookupCache = { };
|
std::array<DxvkComputePipeline*, 256> m_cpLookupCache = { };
|
||||||
|
|
||||||
std::unordered_map<
|
|
||||||
DxvkBufferSliceHandle,
|
|
||||||
DxvkGpuQueryHandle,
|
|
||||||
DxvkHash, DxvkEq> m_predicateWrites;
|
|
||||||
|
|
||||||
void blitImageFb(
|
void blitImageFb(
|
||||||
const Rc<DxvkImage>& dstImage,
|
const Rc<DxvkImage>& dstImage,
|
||||||
const Rc<DxvkImage>& srcImage,
|
const Rc<DxvkImage>& srcImage,
|
||||||
@ -1131,12 +1099,6 @@ namespace dxvk {
|
|||||||
void flushClears(
|
void flushClears(
|
||||||
bool useRenderPass);
|
bool useRenderPass);
|
||||||
|
|
||||||
void updatePredicate(
|
|
||||||
const DxvkBufferSliceHandle& predicate,
|
|
||||||
const DxvkGpuQueryHandle& query);
|
|
||||||
|
|
||||||
void commitPredicateUpdates();
|
|
||||||
|
|
||||||
void startRenderPass();
|
void startRenderPass();
|
||||||
void spillRenderPass(bool flushClears = true);
|
void spillRenderPass(bool flushClears = true);
|
||||||
|
|
||||||
@ -1152,9 +1114,6 @@ namespace dxvk {
|
|||||||
const DxvkRenderTargets& renderTargets,
|
const DxvkRenderTargets& renderTargets,
|
||||||
DxvkRenderPassOps& renderPassOps);
|
DxvkRenderPassOps& renderPassOps);
|
||||||
|
|
||||||
void startConditionalRendering();
|
|
||||||
void pauseConditionalRendering();
|
|
||||||
|
|
||||||
void startTransformFeedback();
|
void startTransformFeedback();
|
||||||
void pauseTransformFeedback();
|
void pauseTransformFeedback();
|
||||||
|
|
||||||
@ -1186,8 +1145,6 @@ namespace dxvk {
|
|||||||
void updateTransformFeedbackBuffers();
|
void updateTransformFeedbackBuffers();
|
||||||
void updateTransformFeedbackState();
|
void updateTransformFeedbackState();
|
||||||
|
|
||||||
void updateConditionalRendering();
|
|
||||||
|
|
||||||
void updateDynamicState();
|
void updateDynamicState();
|
||||||
|
|
||||||
template<VkPipelineBindPoint BindPoint>
|
template<VkPipelineBindPoint BindPoint>
|
||||||
|
@ -22,7 +22,6 @@ namespace dxvk {
|
|||||||
*/
|
*/
|
||||||
enum class DxvkContextFlag : uint32_t {
|
enum class DxvkContextFlag : uint32_t {
|
||||||
GpRenderPassBound, ///< Render pass is currently bound
|
GpRenderPassBound, ///< Render pass is currently bound
|
||||||
GpCondActive, ///< Conditional rendering is enabled
|
|
||||||
GpXfbActive, ///< Transform feedback is enabled
|
GpXfbActive, ///< Transform feedback is enabled
|
||||||
GpDirtyFramebuffer, ///< Framebuffer binding is out of date
|
GpDirtyFramebuffer, ///< Framebuffer binding is out of date
|
||||||
GpDirtyPipeline, ///< Graphics pipeline binding is out of date
|
GpDirtyPipeline, ///< Graphics pipeline binding is out of date
|
||||||
@ -38,7 +37,6 @@ namespace dxvk {
|
|||||||
GpDirtyDepthBounds, ///< Depth bounds have changed
|
GpDirtyDepthBounds, ///< Depth bounds have changed
|
||||||
GpDirtyStencilRef, ///< Stencil reference has changed
|
GpDirtyStencilRef, ///< Stencil reference has changed
|
||||||
GpDirtyViewport, ///< Viewport state has changed
|
GpDirtyViewport, ///< Viewport state has changed
|
||||||
GpDirtyPredicate, ///< Predicate has changed
|
|
||||||
GpDynamicBlendConstants, ///< Blend constants are dynamic
|
GpDynamicBlendConstants, ///< Blend constants are dynamic
|
||||||
GpDynamicDepthBias, ///< Depth bias is dynamic
|
GpDynamicDepthBias, ///< Depth bias is dynamic
|
||||||
GpDynamicDepthBounds, ///< Depth bounds are dynamic
|
GpDynamicDepthBounds, ///< Depth bounds are dynamic
|
||||||
@ -144,12 +142,6 @@ namespace dxvk {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct DxvkCondRenderState {
|
|
||||||
DxvkBufferSlice predicate;
|
|
||||||
VkConditionalRenderingFlagsEXT flags;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct DxvkDeferredClear {
|
struct DxvkDeferredClear {
|
||||||
Rc<DxvkImageView> imageView;
|
Rc<DxvkImageView> imageView;
|
||||||
VkImageAspectFlags clearAspects;
|
VkImageAspectFlags clearAspects;
|
||||||
@ -171,7 +163,6 @@ namespace dxvk {
|
|||||||
DxvkPushConstantState pc;
|
DxvkPushConstantState pc;
|
||||||
DxvkXfbState xfb;
|
DxvkXfbState xfb;
|
||||||
DxvkDynamicState dyn;
|
DxvkDynamicState dyn;
|
||||||
DxvkCondRenderState cond;
|
|
||||||
|
|
||||||
DxvkGraphicsPipelineState gp;
|
DxvkGraphicsPipelineState gp;
|
||||||
DxvkComputePipelineState cp;
|
DxvkComputePipelineState cp;
|
||||||
|
@ -36,7 +36,6 @@ namespace dxvk {
|
|||||||
VkPhysicalDeviceFeatures2 core;
|
VkPhysicalDeviceFeatures2 core;
|
||||||
VkPhysicalDeviceShaderDrawParametersFeatures shaderDrawParameters;
|
VkPhysicalDeviceShaderDrawParametersFeatures shaderDrawParameters;
|
||||||
VkPhysicalDevice4444FormatsFeaturesEXT ext4444Formats;
|
VkPhysicalDevice4444FormatsFeaturesEXT ext4444Formats;
|
||||||
VkPhysicalDeviceConditionalRenderingFeaturesEXT extConditionalRendering;
|
|
||||||
VkPhysicalDeviceCustomBorderColorFeaturesEXT extCustomBorderColor;
|
VkPhysicalDeviceCustomBorderColorFeaturesEXT extCustomBorderColor;
|
||||||
VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable;
|
VkPhysicalDeviceDepthClipEnableFeaturesEXT extDepthClipEnable;
|
||||||
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extExtendedDynamicState;
|
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extExtendedDynamicState;
|
||||||
|
@ -261,7 +261,6 @@ namespace dxvk {
|
|||||||
DxvkExt amdMemoryOverallocationBehaviour = { VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt amdMemoryOverallocationBehaviour = { VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
DxvkExt amdShaderFragmentMask = { VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt amdShaderFragmentMask = { VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
DxvkExt ext4444Formats = { VK_EXT_4444_FORMATS_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt ext4444Formats = { VK_EXT_4444_FORMATS_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
DxvkExt extConditionalRendering = { VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, DxvkExtMode::Disabled };
|
|
||||||
DxvkExt extCustomBorderColor = { VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt extCustomBorderColor = { VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
DxvkExt extDepthClipEnable = { VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt extDepthClipEnable = { VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
DxvkExt extExtendedDynamicState = { VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, DxvkExtMode::Optional };
|
DxvkExt extExtendedDynamicState = { VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, DxvkExtMode::Optional };
|
||||||
|
Loading…
Reference in New Issue
Block a user