vk_instance: Manually enable features

* We need these features so better force enable them and have the driver crash if they're unavailable.
This commit is contained in:
GPUCode
2023-01-18 18:14:17 +02:00
parent d6cab3ab40
commit 27698b0c93
2 changed files with 25 additions and 14 deletions

View File

@ -515,11 +515,22 @@ bool Instance::CreateDevice() {
}, },
}, },
feature_chain.get<vk::PhysicalDevicePortabilitySubsetFeaturesKHR>(), feature_chain.get<vk::PhysicalDevicePortabilitySubsetFeaturesKHR>(),
feature_chain.get<vk::PhysicalDeviceTimelineSemaphoreFeaturesKHR>(), vk::PhysicalDeviceTimelineSemaphoreFeaturesKHR{
feature_chain.get<vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT>(), .timelineSemaphore = true,
feature_chain.get<vk::PhysicalDeviceCustomBorderColorFeaturesEXT>(), },
feature_chain.get<vk::PhysicalDeviceIndexTypeUint8FeaturesEXT>(), vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT{
feature_chain.get<vk::PhysicalDevicePipelineCreationCacheControlFeaturesEXT>(), .extendedDynamicState = true,
},
vk::PhysicalDeviceCustomBorderColorFeaturesEXT{
.customBorderColors = true,
.customBorderColorWithoutFormat = true,
},
vk::PhysicalDeviceIndexTypeUint8FeaturesEXT{
.indexTypeUint8 = true,
},
vk::PhysicalDevicePipelineCreationCacheControlFeaturesEXT{
.pipelineCreationCacheControl = true,
},
}; };
if (portability_subset) { if (portability_subset) {

View File

@ -93,16 +93,16 @@ void RenderpassCache::EnterRenderpass(const RenderpassState& state) {
} }
scheduler.Record([state](vk::CommandBuffer cmdbuf) { scheduler.Record([state](vk::CommandBuffer cmdbuf) {
const vk::RenderPassBeginInfo renderpass_begin_info = { const vk::RenderPassBeginInfo renderpass_begin_info = {
.renderPass = state.renderpass, .renderPass = state.renderpass,
.framebuffer = state.framebuffer, .framebuffer = state.framebuffer,
.renderArea = state.render_area, .renderArea = state.render_area,
.clearValueCount = 1, .clearValueCount = 1,
.pClearValues = &state.clear, .pClearValues = &state.clear,
}; };
cmdbuf.beginRenderPass(renderpass_begin_info, vk::SubpassContents::eInline); cmdbuf.beginRenderPass(renderpass_begin_info, vk::SubpassContents::eInline);
}); });
if (is_dirty) { if (is_dirty) {
scheduler.MarkStateNonDirty(StateFlags::Renderpass); scheduler.MarkStateNonDirty(StateFlags::Renderpass);