mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-20 19:54:19 +01:00
[dxvk] Use vkCmdBindIndexBuffer2 if supported
This commit is contained in:
parent
a4f2a49a02
commit
64828e2c6c
@ -467,6 +467,16 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
void cmdBindIndexBuffer2(
|
||||
VkBuffer buffer,
|
||||
VkDeviceSize offset,
|
||||
VkDeviceSize size,
|
||||
VkIndexType indexType) {
|
||||
m_vkd->vkCmdBindIndexBuffer2KHR(m_cmd.execBuffer,
|
||||
buffer, offset, size, indexType);
|
||||
}
|
||||
|
||||
|
||||
void cmdBindPipeline(
|
||||
VkPipelineBindPoint pipelineBindPoint,
|
||||
VkPipeline pipeline) {
|
||||
|
@ -61,6 +61,10 @@ namespace dxvk {
|
||||
// requested rasterizer sample count changes
|
||||
if (m_device->features().core.features.variableMultisampleRate)
|
||||
m_features.set(DxvkContextFeature::VariableMultisampleRate);
|
||||
|
||||
// Maintenance5 introduced a bounded BindIndexBuffer function
|
||||
if (m_device->features().khrMaintenance5.maintenance5)
|
||||
m_features.set(DxvkContextFeature::IndexBufferRobustness);
|
||||
}
|
||||
|
||||
|
||||
@ -5589,10 +5593,18 @@ namespace dxvk {
|
||||
m_flags.clr(DxvkContextFlag::GpDirtyIndexBuffer);
|
||||
auto bufferInfo = m_state.vi.indexBuffer.getDescriptor();
|
||||
|
||||
m_cmd->cmdBindIndexBuffer(
|
||||
bufferInfo.buffer.buffer,
|
||||
bufferInfo.buffer.offset,
|
||||
m_state.vi.indexType);
|
||||
if (m_features.test(DxvkContextFeature::IndexBufferRobustness)) {
|
||||
m_cmd->cmdBindIndexBuffer2(
|
||||
bufferInfo.buffer.buffer,
|
||||
bufferInfo.buffer.offset,
|
||||
bufferInfo.buffer.range,
|
||||
m_state.vi.indexType);
|
||||
} else {
|
||||
m_cmd->cmdBindIndexBuffer(
|
||||
bufferInfo.buffer.buffer,
|
||||
bufferInfo.buffer.offset,
|
||||
m_state.vi.indexType);
|
||||
}
|
||||
|
||||
if (m_vbTracked.set(MaxNumVertexBindings))
|
||||
m_cmd->trackResource<DxvkAccess::Read>(m_state.vi.indexBuffer.buffer());
|
||||
|
@ -65,6 +65,7 @@ namespace dxvk {
|
||||
enum class DxvkContextFeature : uint32_t {
|
||||
TrackGraphicsPipeline,
|
||||
VariableMultisampleRate,
|
||||
IndexBufferRobustness,
|
||||
FeatureCount
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user