Branimir Karadžić 9 лет назад
Родитель
Сommit
0330f5618b
2 измененных файлов с 17 добавлено и 8 удалено
  1. 8 4
      src/renderer_d3d11.cpp
  2. 9 4
      src/renderer_d3d12.cpp

+ 8 - 4
src/renderer_d3d11.cpp

@@ -2705,11 +2705,15 @@ BX_PRAGMA_DIAGNOSTIC_POP();
 				m_blendStateCache.add(hash, bs);
 			}
 
+			const uint64_t f0 = BGFX_STATE_BLEND_FACTOR;
+			const uint64_t f1 = BGFX_STATE_BLEND_INV_FACTOR;
+			const uint64_t f2 = BGFX_STATE_BLEND_FACTOR<<4;
+			const uint64_t f3 = BGFX_STATE_BLEND_INV_FACTOR<<4;
 			bool hasFactor = 0
-				|| 0 != (_state &  BGFX_STATE_BLEND_FACTOR         )
-				|| 0 != (_state &  BGFX_STATE_BLEND_INV_FACTOR     )
-				|| 0 != (_state & (BGFX_STATE_BLEND_FACTOR    <<4) )
-				|| 0 != (_state & (BGFX_STATE_BLEND_INV_FACTOR<<4) )
+				|| f0 == (_state & f0)
+				|| f1 == (_state & f1)
+				|| f2 == (_state & f2)
+				|| f3 == (_state & f3)
 				;
 
 			float blendFactor[4] = { 1.0f, 1.0f, 1.0f, 1.0f };

+ 9 - 4
src/renderer_d3d12.cpp

@@ -4629,6 +4629,11 @@ data.NumQualityLevels = 0;
 		m_backBufferColorIdx = m_swapChain->GetCurrentBackBufferIndex();
 #endif // BX_PLATFORM_WINDOWS
 
+		const uint64_t f0 = BGFX_STATE_BLEND_FACTOR;
+		const uint64_t f1 = BGFX_STATE_BLEND_INV_FACTOR;
+		const uint64_t f2 = BGFX_STATE_BLEND_FACTOR<<4;
+		const uint64_t f3 = BGFX_STATE_BLEND_INV_FACTOR<<4;
+
 		D3D12_GPU_DESCRIPTOR_HANDLE gpuHandle;
 		ScratchBufferD3D12& scratchBuffer = m_scratchBuffer[m_backBufferColorIdx];
 		scratchBuffer.reset(gpuHandle);
@@ -5024,10 +5029,10 @@ data.NumQualityLevels = 0;
 				{
 					const uint64_t state = draw.m_stateFlags;
 					bool hasFactor = 0
-						|| 0 != (state &  BGFX_STATE_BLEND_FACTOR         )
-						|| 0 != (state &  BGFX_STATE_BLEND_INV_FACTOR     )
-						|| 0 != (state & (BGFX_STATE_BLEND_FACTOR    <<4) )
-						|| 0 != (state & (BGFX_STATE_BLEND_INV_FACTOR<<4) )
+						|| f0 == (state & f0)
+						|| f1 == (state & f1)
+						|| f2 == (state & f2)
+						|| f3 == (state & f3)
 						;
 
 					const VertexBufferD3D12& vb = m_vertexBuffers[draw.m_vertexBuffer.idx];