From 6723f810ed83007e3b9c2721c1ab4e0c20f3a6b5 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Fri, 10 Mar 2023 16:13:18 -0600 Subject: [PATCH] feat(gx): sync index buffer in d3d backend --- src/gx/d3d/CGxDeviceD3d.cpp | 13 ++++++++++++- src/gx/d3d/CGxDeviceD3d.hpp | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/gx/d3d/CGxDeviceD3d.cpp b/src/gx/d3d/CGxDeviceD3d.cpp index 50fba9f..85f9125 100644 --- a/src/gx/d3d/CGxDeviceD3d.cpp +++ b/src/gx/d3d/CGxDeviceD3d.cpp @@ -950,7 +950,18 @@ void CGxDeviceD3d::IStateSyncEnables() { } void CGxDeviceD3d::IStateSyncIndexPtr() { - // TODO + if (!this->m_primIndexDirty) { + return; + } + + this->m_primIndexDirty = 0; + + auto d3dIndexBuf = static_cast(this->m_primIndexBuf->m_pool->m_apiSpecific); + + if (this->m_d3dCurrentIndexBuf != d3dIndexBuf) { + this->m_d3dDevice->SetIndices(d3dIndexBuf); + this->m_d3dCurrentIndexBuf = d3dIndexBuf; + } } void CGxDeviceD3d::IStateSyncVertexPtrs() { diff --git a/src/gx/d3d/CGxDeviceD3d.hpp b/src/gx/d3d/CGxDeviceD3d.hpp index 58030a5..5be3a18 100644 --- a/src/gx/d3d/CGxDeviceD3d.hpp +++ b/src/gx/d3d/CGxDeviceD3d.hpp @@ -220,6 +220,7 @@ class CGxDeviceD3d : public CGxDevice { int32_t m_d3dIsHwDevice = 0; D3DDISPLAYMODE m_desktopDisplayMode; D3DFORMAT m_devAdapterFormat; + LPDIRECT3DINDEXBUFFER9 m_d3dCurrentIndexBuf; uint32_t m_deviceStates[DeviceStates_Last]; // Virtual member functions