mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-01 19:29:16 +01:00
[d3d9] Add a bunch of missing likely/unlikely to PrepareDraw
PrepareDraw is pretty much the hottest part of the d3d9 frontend, so we take every tiny bit we get.
This commit is contained in:
parent
395ac38890
commit
d39d879838
@ -5353,7 +5353,7 @@ namespace dxvk {
|
|||||||
|
|
||||||
*pDynamicVBOs = dynamicSysmemVBOs;
|
*pDynamicVBOs = dynamicSysmemVBOs;
|
||||||
|
|
||||||
if (pDynamicIBO)
|
if (unlikely(pDynamicIBO))
|
||||||
*pDynamicIBO = dynamicSysmemIBO;
|
*pDynamicIBO = dynamicSysmemIBO;
|
||||||
|
|
||||||
if (likely(!dynamicSysmemVBOs && !dynamicSysmemIBO))
|
if (likely(!dynamicSysmemVBOs && !dynamicSysmemIBO))
|
||||||
@ -6908,7 +6908,7 @@ namespace dxvk {
|
|||||||
const uint32_t buffersToUpload = m_activeVertexBuffersToUpload & usedBuffersMask;
|
const uint32_t buffersToUpload = m_activeVertexBuffersToUpload & usedBuffersMask;
|
||||||
for (uint32_t bufferIdx : bit::BitMask(buffersToUpload)) {
|
for (uint32_t bufferIdx : bit::BitMask(buffersToUpload)) {
|
||||||
auto* vbo = GetCommonBuffer(m_state.vertexBuffers[bufferIdx].vertexBuffer);
|
auto* vbo = GetCommonBuffer(m_state.vertexBuffers[bufferIdx].vertexBuffer);
|
||||||
if (vbo != nullptr && vbo->NeedsUpload())
|
if (likely(vbo != nullptr && vbo->NeedsUpload()))
|
||||||
FlushBuffer(vbo);
|
FlushBuffer(vbo);
|
||||||
}
|
}
|
||||||
m_activeVertexBuffersToUpload &= ~buffersToUpload;
|
m_activeVertexBuffersToUpload &= ~buffersToUpload;
|
||||||
@ -6926,44 +6926,44 @@ namespace dxvk {
|
|||||||
GenerateTextureMips(texturesToGen);
|
GenerateTextureMips(texturesToGen);
|
||||||
|
|
||||||
auto* ibo = GetCommonBuffer(m_state.indices);
|
auto* ibo = GetCommonBuffer(m_state.indices);
|
||||||
if (UploadIBO && ibo != nullptr && ibo->NeedsUpload())
|
if (unlikely(UploadIBO && ibo != nullptr && ibo->NeedsUpload()))
|
||||||
FlushBuffer(ibo);
|
FlushBuffer(ibo);
|
||||||
|
|
||||||
UpdateFog();
|
UpdateFog();
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyFramebuffer))
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyFramebuffer)))
|
||||||
BindFramebuffer();
|
BindFramebuffer();
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyViewportScissor))
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyViewportScissor)))
|
||||||
BindViewportAndScissor();
|
BindViewportAndScissor();
|
||||||
|
|
||||||
const uint32_t activeDirtySamplers = m_dirtySamplerStates & usedTextureMask;
|
const uint32_t activeDirtySamplers = m_dirtySamplerStates & usedTextureMask;
|
||||||
if (activeDirtySamplers)
|
if (unlikely(activeDirtySamplers))
|
||||||
UndirtySamplers(activeDirtySamplers);
|
UndirtySamplers(activeDirtySamplers);
|
||||||
|
|
||||||
const uint32_t usedDirtyTextures = m_dirtyTextures & usedSamplerMask;
|
const uint32_t usedDirtyTextures = m_dirtyTextures & usedSamplerMask;
|
||||||
if (usedDirtyTextures)
|
if (likely(usedDirtyTextures))
|
||||||
UndirtyTextures(usedDirtyTextures);
|
UndirtyTextures(usedDirtyTextures);
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyBlendState))
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyBlendState)))
|
||||||
BindBlendState();
|
BindBlendState();
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyDepthStencilState))
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyDepthStencilState)))
|
||||||
BindDepthStencilState();
|
BindDepthStencilState();
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyRasterizerState))
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyRasterizerState)))
|
||||||
BindRasterizerState();
|
BindRasterizerState();
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyDepthBias))
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyDepthBias)))
|
||||||
BindDepthBias();
|
BindDepthBias();
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyMultiSampleState))
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyMultiSampleState)))
|
||||||
BindMultiSampleState();
|
BindMultiSampleState();
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyAlphaTestState))
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyAlphaTestState)))
|
||||||
BindAlphaTestState();
|
BindAlphaTestState();
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyClipPlanes))
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyClipPlanes)))
|
||||||
UpdateClipPlanes();
|
UpdateClipPlanes();
|
||||||
|
|
||||||
UpdatePointMode(PrimitiveType == D3DPT_POINTLIST);
|
UpdatePointMode(PrimitiveType == D3DPT_POINTLIST);
|
||||||
@ -6989,7 +6989,7 @@ namespace dxvk {
|
|||||||
UpdateFixedFunctionVS();
|
UpdateFixedFunctionVS();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyInputLayout))
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyInputLayout)))
|
||||||
BindInputLayout();
|
BindInputLayout();
|
||||||
|
|
||||||
if (likely(UseProgrammablePS())) {
|
if (likely(UseProgrammablePS())) {
|
||||||
@ -7022,7 +7022,7 @@ namespace dxvk {
|
|||||||
const uint32_t drefClampMask = m_drefClamp & depthTextureMask;
|
const uint32_t drefClampMask = m_drefClamp & depthTextureMask;
|
||||||
UpdateCommonSamplerSpec(nullTextureMask, depthTextureMask, drefClampMask);
|
UpdateCommonSamplerSpec(nullTextureMask, depthTextureMask, drefClampMask);
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtySharedPixelShaderData)) {
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtySharedPixelShaderData))) {
|
||||||
m_flags.clr(D3D9DeviceFlag::DirtySharedPixelShaderData);
|
m_flags.clr(D3D9DeviceFlag::DirtySharedPixelShaderData);
|
||||||
|
|
||||||
auto mapPtr = m_psShared.AllocSlice();
|
auto mapPtr = m_psShared.AllocSlice();
|
||||||
@ -7043,7 +7043,7 @@ namespace dxvk {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_flags.test(D3D9DeviceFlag::DirtyDepthBounds)) {
|
if (unlikely(m_flags.test(D3D9DeviceFlag::DirtyDepthBounds))) {
|
||||||
m_flags.clr(D3D9DeviceFlag::DirtyDepthBounds);
|
m_flags.clr(D3D9DeviceFlag::DirtyDepthBounds);
|
||||||
|
|
||||||
DxvkDepthBounds db;
|
DxvkDepthBounds db;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user