mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-02-20 19:54:19 +01:00
[d3d11] Implemented index buffer binding
This commit is contained in:
parent
9e1cf8396b
commit
56826cbf82
@ -588,7 +588,41 @@ namespace dxvk {
|
|||||||
ID3D11Buffer* pIndexBuffer,
|
ID3D11Buffer* pIndexBuffer,
|
||||||
DXGI_FORMAT Format,
|
DXGI_FORMAT Format,
|
||||||
UINT Offset) {
|
UINT Offset) {
|
||||||
Logger::err("D3D11DeviceContext::IASetIndexBuffer: Not implemented");
|
D3D11IndexBufferBinding binding;
|
||||||
|
binding.buffer = static_cast<D3D11Buffer*>(pIndexBuffer);
|
||||||
|
binding.offset = Offset;
|
||||||
|
binding.format = Format;
|
||||||
|
m_state.ia.indexBuffer = binding;
|
||||||
|
|
||||||
|
DxvkBufferBinding dxvkBinding;
|
||||||
|
|
||||||
|
if (binding.buffer != nullptr) {
|
||||||
|
Rc<DxvkBuffer> dxvkBuffer = binding.buffer->GetDXVKBuffer();
|
||||||
|
|
||||||
|
dxvkBinding = DxvkBufferBinding(
|
||||||
|
dxvkBuffer, binding.offset,
|
||||||
|
dxvkBuffer->info().size - binding.offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// As in Vulkan, the index format can be either a 32-bit
|
||||||
|
// unsigned integer or a 16-bit unsigned integer, no other
|
||||||
|
// formats are allowed.
|
||||||
|
VkIndexType indexType = VK_INDEX_TYPE_UINT32;
|
||||||
|
|
||||||
|
switch (binding.format) {
|
||||||
|
case DXGI_FORMAT_R16_UINT: indexType = VK_INDEX_TYPE_UINT16; break;
|
||||||
|
case DXGI_FORMAT_R32_UINT: indexType = VK_INDEX_TYPE_UINT32; break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
Logger::err(str::format(
|
||||||
|
"D3D11DeviceContext::IASetIndexBuffer: Invalid index format: ",
|
||||||
|
binding.format));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_context->bindIndexBuffer(
|
||||||
|
dxvkBinding, indexType);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user