mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-09-12 22:42:53 -06:00
VideoBackends: allow custom pixel uniforms to be passed to the vertex shader as well
This commit is contained in:
@ -59,6 +59,7 @@ void StateManager::Apply()
|
||||
|
||||
const bool dirtyConstants = m_dirtyFlags.test(DirtyFlag_PixelConstants) ||
|
||||
m_dirtyFlags.test(DirtyFlag_VertexConstants) ||
|
||||
m_dirtyFlags.test(DirtyFlag_CustomConstants) ||
|
||||
m_dirtyFlags.test(DirtyFlag_GeometryConstants);
|
||||
const bool dirtyShaders = m_dirtyFlags.test(DirtyFlag_PixelShader) ||
|
||||
m_dirtyFlags.test(DirtyFlag_VertexShader) ||
|
||||
@ -69,18 +70,12 @@ void StateManager::Apply()
|
||||
if (dirtyConstants)
|
||||
{
|
||||
if (m_current.pixelConstants[0] != m_pending.pixelConstants[0] ||
|
||||
m_current.pixelConstants[1] != m_pending.pixelConstants[1] ||
|
||||
m_current.pixelConstants[2] != m_pending.pixelConstants[2])
|
||||
m_current.pixelConstants[1] != m_pending.pixelConstants[1])
|
||||
{
|
||||
u32 count = 1;
|
||||
if (m_pending.pixelConstants[1])
|
||||
count++;
|
||||
if (m_pending.pixelConstants[2])
|
||||
count++;
|
||||
D3D::context->PSSetConstantBuffers(0, count, m_pending.pixelConstants.data());
|
||||
D3D::context->PSSetConstantBuffers(0, 1, &m_pending.pixelConstants[0]);
|
||||
D3D::context->PSSetConstantBuffers(1, 1, &m_pending.pixelConstants[1]);
|
||||
m_current.pixelConstants[0] = m_pending.pixelConstants[0];
|
||||
m_current.pixelConstants[1] = m_pending.pixelConstants[1];
|
||||
m_current.pixelConstants[2] = m_pending.pixelConstants[2];
|
||||
}
|
||||
|
||||
if (m_current.vertexConstants != m_pending.vertexConstants)
|
||||
@ -90,6 +85,13 @@ void StateManager::Apply()
|
||||
m_current.vertexConstants = m_pending.vertexConstants;
|
||||
}
|
||||
|
||||
if (m_current.customConstants != m_pending.customConstants)
|
||||
{
|
||||
D3D::context->PSSetConstantBuffers(2, 1, &m_pending.customConstants);
|
||||
D3D::context->VSSetConstantBuffers(2, 1, &m_pending.customConstants);
|
||||
m_current.customConstants = m_pending.customConstants;
|
||||
}
|
||||
|
||||
if (m_current.geometryConstants != m_pending.geometryConstants)
|
||||
{
|
||||
D3D::context->GSSetConstantBuffers(0, 1, &m_pending.geometryConstants);
|
||||
|
Reference in New Issue
Block a user