From 9d601299ad2186ef9077c350bb5f8c092233219b Mon Sep 17 00:00:00 2001 From: PatrickvL Date: Mon, 17 May 2021 14:51:03 +0200 Subject: [PATCH] In CxbxImpl_SetVertexData4f, call CxbxSetVertexAttribute *after* detecting Register X_D3DVSDE_VERTEX, and updating it to X_D3DVSDE_POSITION, to avoid needless "Register < 0" logging, and to have current position values written to the NV2A vertex attribute value buffer. --- src/core/hle/D3D8/XbVertexBuffer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/hle/D3D8/XbVertexBuffer.cpp b/src/core/hle/D3D8/XbVertexBuffer.cpp index a2e4b78fe..23338d780 100644 --- a/src/core/hle/D3D8/XbVertexBuffer.cpp +++ b/src/core/hle/D3D8/XbVertexBuffer.cpp @@ -749,9 +749,6 @@ void CxbxImpl_SetVertexData4f(int Register, FLOAT a, FLOAT b, FLOAT c, FLOAT d) HRESULT hRet = D3D_OK; - // Always update our attribute storage with the most recently set register value - CxbxSetVertexAttribute(Register, a, b, c, d); - // Grow g_InlineVertexBuffer_Table to contain at least current, and a potentially next vertex if (g_InlineVertexBuffer_TableLength <= g_InlineVertexBuffer_TableOffset + 1) { UINT InlineVertexBuffer_TableLength_Original = g_InlineVertexBuffer_TableLength; @@ -791,6 +788,9 @@ void CxbxImpl_SetVertexData4f(int Register, FLOAT a, FLOAT b, FLOAT c, FLOAT d) if (Register == X_D3DVSDE_VERTEX) index = X_D3DVSDE_POSITION; + // Always update our attribute storage with the most recently set register value + CxbxSetVertexAttribute(index, a, b, c, d); + unsigned o = g_InlineVertexBuffer_TableOffset; g_InlineVertexBuffer_Table[o].Slots[index] = D3DXVECTOR4(a, b, c, d);