1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-20 19:54:19 +01:00

[d3d9] Dirty FF vertex shader if any D3D9VertexDeclFlags change.

The vertex shader depends on all of these in some way.
This commit is contained in:
Georg Lehmann 2022-01-10 22:09:39 +01:00 committed by Joshie
parent b1a6cbad7f
commit f5744284eb
2 changed files with 7 additions and 6 deletions

View File

@ -2722,11 +2722,8 @@ namespace dxvk {
bool dirtyFFShader = decl == nullptr || m_state.vertexDecl == nullptr;
if (!dirtyFFShader)
dirtyFFShader |= decl->TestFlag(D3D9VertexDeclFlag::HasPositionT) != m_state.vertexDecl->TestFlag(D3D9VertexDeclFlag::HasPositionT)
|| decl->TestFlag(D3D9VertexDeclFlag::HasColor0) != m_state.vertexDecl->TestFlag(D3D9VertexDeclFlag::HasColor0)
|| decl->TestFlag(D3D9VertexDeclFlag::HasColor1) != m_state.vertexDecl->TestFlag(D3D9VertexDeclFlag::HasColor1)
|| decl->TestFlag(D3D9VertexDeclFlag::HasPointSize) != m_state.vertexDecl->TestFlag(D3D9VertexDeclFlag::HasPointSize)
|| decl->GetTexcoordMask() != m_state.vertexDecl->GetTexcoordMask();
dirtyFFShader |= decl->GetFlags() != m_state.vertexDecl->GetFlags()
|| decl->GetTexcoordMask() != m_state.vertexDecl->GetTexcoordMask();
if (dirtyFFShader)
m_flags.set(D3D9DeviceFlag::DirtyFFVertexShader);

View File

@ -7,7 +7,7 @@
namespace dxvk {
enum D3D9VertexDeclFlag {
enum class D3D9VertexDeclFlag {
HasColor0,
HasColor1,
HasPositionT,
@ -58,6 +58,10 @@ namespace dxvk {
return m_flags.test(flag);
}
D3D9VertexDeclFlags GetFlags() const {
return m_flags;
}
uint32_t GetTexcoordMask() const {
return m_texcoordMask;
}