Browse Source

Merge branch 'master' of github.com:bkaradzic/bgfx

Branimir Karadžić 8 years ago
parent
commit
c13b2e2c36
2 changed files with 113 additions and 112 deletions
  1. 109 109
      src/renderer_d3d12.cpp
  2. 4 3
      src/renderer_gl.cpp

+ 109 - 109
src/renderer_d3d12.cpp

@@ -484,13 +484,13 @@ namespace bgfx { namespace d3d12
 		const HeapProperty& heapProperty = s_heapProperties[_heapProperty];
 		ID3D12Resource* resource;
 		DX_CHECK(_device->CreateCommittedResource(&heapProperty.m_properties
-				, D3D12_HEAP_FLAG_NONE
-				, _resourceDesc
-				, heapProperty.m_state
-				, _clearValue
-				, IID_ID3D12Resource
-				, (void**)&resource
-				) );
+			, D3D12_HEAP_FLAG_NONE
+			, _resourceDesc
+			, heapProperty.m_state
+			, _clearValue
+			, IID_ID3D12Resource
+			, (void**)&resource
+			) );
 		BX_WARN(NULL != resource, "CreateCommittedResource failed (size: %d). Out of memory?"
 			, _resourceDesc->Width
 			);
@@ -800,16 +800,16 @@ namespace bgfx { namespace d3d12
 						wcstombs(description, desc.Description, BX_COUNTOF(desc.Description) );
 						BX_TRACE("\tDescription: %s", description);
 						BX_TRACE("\tVendorId: 0x%08x, DeviceId: 0x%08x, SubSysId: 0x%08x, Revision: 0x%08x"
-								, desc.VendorId
-								, desc.DeviceId
-								, desc.SubSysId
-								, desc.Revision
-								);
+							, desc.VendorId
+							, desc.DeviceId
+							, desc.SubSysId
+							, desc.Revision
+							);
 						BX_TRACE("\tMemory: %" PRIi64 " (video), %" PRIi64 " (system), %" PRIi64 " (shared)"
-								, desc.DedicatedVideoMemory
-								, desc.DedicatedSystemMemory
-								, desc.SharedSystemMemory
-								);
+							, desc.DedicatedVideoMemory
+							, desc.DedicatedSystemMemory
+							, desc.SharedSystemMemory
+							);
 
 						g_caps.gpu[ii].vendorId = (uint16_t)desc.VendorId;
 						g_caps.gpu[ii].deviceId = (uint16_t)desc.DeviceId;
@@ -975,11 +975,11 @@ namespace bgfx { namespace d3d12
 					architecture.NodeIndex = ii;
 					DX_CHECK(m_device->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE, &architecture, sizeof(architecture) ) );
 					BX_TRACE("\tNode % 2d: TileBasedRenderer %d, UMA %d, CacheCoherentUMA %d"
-							, ii
-							, architecture.TileBasedRenderer
-							, architecture.UMA
-							, architecture.CacheCoherentUMA
-							);
+						, ii
+						, architecture.TileBasedRenderer
+						, architecture.UMA
+						, architecture.CacheCoherentUMA
+						);
 					if (0 == ii)
 					{
 						bx::memCopy(&m_architecture, &architecture, sizeof(architecture) );
@@ -1087,13 +1087,13 @@ namespace bgfx { namespace d3d12
 				m_scd.Flags        = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;
 
 				BX_CHECK(m_scd.BufferCount <= BX_COUNTOF(m_backBufferColor), "Swap chain buffer count %d (max %d)."
-						, m_scd.BufferCount
-						, BX_COUNTOF(m_backBufferColor)
-						);
+					, m_scd.BufferCount
+					, BX_COUNTOF(m_backBufferColor)
+					);
 				hr = m_factory->CreateSwapChain(m_cmd.m_commandQueue
-						, &m_scd
-						, reinterpret_cast<IDXGISwapChain**>(&m_swapChain)
-						);
+					, &m_scd
+					, reinterpret_cast<IDXGISwapChain**>(&m_swapChain)
+					);
 #endif // BX_PLATFORM_*
 				if (FAILED(hr) )
 				{
@@ -1148,10 +1148,10 @@ namespace bgfx { namespace d3d12
 
 #if BX_PLATFORM_WINDOWS
 				DX_CHECK(m_factory->MakeWindowAssociation( (HWND)g_platformData.nwh
-						, 0
-						| DXGI_MWA_NO_WINDOW_CHANGES
-						| DXGI_MWA_NO_ALT_ENTER
-						) );
+					, 0
+					| DXGI_MWA_NO_WINDOW_CHANGES
+					| DXGI_MWA_NO_ALT_ENTER
+					) );
 
 				if (BX_ENABLED(BGFX_CONFIG_DEBUG) )
 				{
@@ -1182,29 +1182,29 @@ namespace bgfx { namespace d3d12
 
 				D3D12_DESCRIPTOR_HEAP_DESC rtvDescHeap;
 				rtvDescHeap.NumDescriptors = 0
-						+ BX_COUNTOF(m_backBufferColor)
-						+ BGFX_CONFIG_MAX_FRAME_BUFFERS*BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS
-						;
+					+ BX_COUNTOF(m_backBufferColor)
+					+ BGFX_CONFIG_MAX_FRAME_BUFFERS*BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS
+					;
 				rtvDescHeap.Type     = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
 				rtvDescHeap.Flags    = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
 				rtvDescHeap.NodeMask = 1;
 				DX_CHECK(m_device->CreateDescriptorHeap(&rtvDescHeap
-						, IID_ID3D12DescriptorHeap
-						, (void**)&m_rtvDescriptorHeap
-						) );
+					, IID_ID3D12DescriptorHeap
+					, (void**)&m_rtvDescriptorHeap
+					) );
 
 				D3D12_DESCRIPTOR_HEAP_DESC dsvDescHeap;
 				dsvDescHeap.NumDescriptors = 0
-						+ 1 // reserved for depth backbuffer.
-						+ BGFX_CONFIG_MAX_FRAME_BUFFERS
-						;
+					+ 1 // reserved for depth backbuffer.
+					+ BGFX_CONFIG_MAX_FRAME_BUFFERS
+					;
 				dsvDescHeap.Type     = D3D12_DESCRIPTOR_HEAP_TYPE_DSV;
 				dsvDescHeap.Flags    = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
 				dsvDescHeap.NodeMask = 1;
 				DX_CHECK(m_device->CreateDescriptorHeap(&dsvDescHeap
-						, IID_ID3D12DescriptorHeap
-						, (void**)&m_dsvDescriptorHeap
-						) );
+					, IID_ID3D12DescriptorHeap
+					, (void**)&m_dsvDescriptorHeap
+					) );
 
 				for (uint32_t ii = 0; ii < BX_COUNTOF(m_scratchBuffer); ++ii)
 				{
@@ -1246,37 +1246,37 @@ namespace bgfx { namespace d3d12
 				ID3DBlob* outBlob;
 				ID3DBlob* errorBlob;
 				DX_CHECK(D3D12SerializeRootSignature(&descRootSignature
-						, D3D_ROOT_SIGNATURE_VERSION_1
-						, &outBlob
-						, &errorBlob
-						) );
+					, D3D_ROOT_SIGNATURE_VERSION_1
+					, &outBlob
+					, &errorBlob
+					) );
 
 				DX_CHECK(m_device->CreateRootSignature(0
-						, outBlob->GetBufferPointer()
-						, outBlob->GetBufferSize()
-						, IID_ID3D12RootSignature
-						, (void**)&m_rootSignature
-						) );
+					, outBlob->GetBufferPointer()
+					, outBlob->GetBufferSize()
+					, IID_ID3D12RootSignature
+					, (void**)&m_rootSignature
+					) );
 
 				g_caps.supported |= ( 0
-									| BGFX_CAPS_TEXTURE_3D
-									| BGFX_CAPS_TEXTURE_COMPARE_ALL
-									| BGFX_CAPS_INSTANCING
-									| BGFX_CAPS_VERTEX_ATTRIB_HALF
-									| BGFX_CAPS_VERTEX_ATTRIB_UINT10
-									| BGFX_CAPS_FRAGMENT_DEPTH
-									| BGFX_CAPS_BLEND_INDEPENDENT
-									| BGFX_CAPS_COMPUTE
-									| (m_options.ROVsSupported ? BGFX_CAPS_FRAGMENT_ORDERING : 0)
-//									| (m_architecture.UMA ? BGFX_CAPS_TEXTURE_DIRECT_ACCESS : 0)
-//									| (BX_ENABLED(BX_PLATFORM_WINDOWS) ? BGFX_CAPS_SWAP_CHAIN : 0)
-									| BGFX_CAPS_TEXTURE_BLIT
-									| BGFX_CAPS_TEXTURE_READ_BACK
-									| BGFX_CAPS_OCCLUSION_QUERY
-									| BGFX_CAPS_ALPHA_TO_COVERAGE
-									| BGFX_CAPS_TEXTURE_2D_ARRAY
-									| BGFX_CAPS_TEXTURE_CUBE_ARRAY
-									);
+					| BGFX_CAPS_TEXTURE_3D
+					| BGFX_CAPS_TEXTURE_COMPARE_ALL
+					| BGFX_CAPS_INSTANCING
+					| BGFX_CAPS_VERTEX_ATTRIB_HALF
+					| BGFX_CAPS_VERTEX_ATTRIB_UINT10
+					| BGFX_CAPS_FRAGMENT_DEPTH
+					| BGFX_CAPS_BLEND_INDEPENDENT
+					| BGFX_CAPS_COMPUTE
+					| (m_options.ROVsSupported ? BGFX_CAPS_FRAGMENT_ORDERING : 0)
+//					| (m_architecture.UMA ? BGFX_CAPS_TEXTURE_DIRECT_ACCESS : 0)
+//					| (BX_ENABLED(BX_PLATFORM_WINDOWS) ? BGFX_CAPS_SWAP_CHAIN : 0)
+					| BGFX_CAPS_TEXTURE_BLIT
+					| BGFX_CAPS_TEXTURE_READ_BACK
+					| BGFX_CAPS_OCCLUSION_QUERY
+					| BGFX_CAPS_ALPHA_TO_COVERAGE
+					| BGFX_CAPS_TEXTURE_2D_ARRAY
+					| BGFX_CAPS_TEXTURE_CUBE_ARRAY
+					);
 				g_caps.limits.maxTextureSize   = 16384;
 				g_caps.limits.maxFBAttachments = uint8_t(bx::uint32_min(16, BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS) );
 				g_caps.limits.maxVertexStreams = BGFX_CONFIG_MAX_VERTEX_STREAMS;
@@ -2096,9 +2096,9 @@ namespace bgfx { namespace d3d12
 				D3D12_CPU_DESCRIPTOR_HANDLE handle = getCPUHandleHeapStart(m_rtvDescriptorHeap);
 				handle.ptr += ii * rtvDescriptorSize;
 				DX_CHECK(m_swapChain->GetBuffer(ii
-						, IID_ID3D12Resource
-						, (void**)&m_backBufferColor[ii]
-						) );
+					, IID_ID3D12Resource
+					, (void**)&m_backBufferColor[ii]
+					) );
 				m_device->CreateRenderTargetView(m_backBufferColor[ii], NULL, handle);
 			}
 
@@ -2951,9 +2951,9 @@ data.NumQualityLevels = 0;
 			if (NULL == pso)
 			{
 				DX_CHECK(m_device->CreateGraphicsPipelineState(&desc
-						, IID_ID3D12PipelineState
-						, (void**)&pso
-						) );
+					, IID_ID3D12PipelineState
+					, (void**)&pso
+					) );
 			}
 
 			BGFX_FATAL(NULL != pso, Fatal::InvalidShader, "Failed to create PSO!");
@@ -3352,9 +3352,9 @@ data.NumQualityLevels = 0;
 		desc.Flags    = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
 		desc.NodeMask = 1;
 		DX_CHECK(device->CreateDescriptorHeap(&desc
-				, IID_ID3D12DescriptorHeap
-				, (void**)&m_heap
-				) );
+			, IID_ID3D12DescriptorHeap
+			, (void**)&m_heap
+			) );
 
 		m_upload = createCommittedResource(device, HeapProperty::Upload, desc.NumDescriptors * 1024);
 		m_gpuVA  = m_upload->GetGPUVirtualAddress();
@@ -3537,9 +3537,9 @@ data.NumQualityLevels = 0;
 		desc.Flags    = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
 		desc.NodeMask = 1;
 		DX_CHECK(device->CreateDescriptorHeap(&desc
-				, IID_ID3D12DescriptorHeap
-				, (void**)&m_heap
-				) );
+			, IID_ID3D12DescriptorHeap
+			, (void**)&m_heap
+			) );
 
 		m_cpuHandle = getCPUHandleHeapStart(m_heap);
 		m_gpuHandle = getGPUHandleHeapStart(m_heap);
@@ -3651,32 +3651,32 @@ data.NumQualityLevels = 0;
 		queueDesc.Flags    = D3D12_COMMAND_QUEUE_FLAG_NONE;
 		queueDesc.NodeMask = 1;
 		DX_CHECK(_device->CreateCommandQueue(&queueDesc
-				, IID_ID3D12CommandQueue
-				, (void**)&m_commandQueue
-				) );
+			, IID_ID3D12CommandQueue
+			, (void**)&m_commandQueue
+			) );
 
 		m_completedFence = 0;
 		m_currentFence   = 0;
 		DX_CHECK(_device->CreateFence(0
-				, D3D12_FENCE_FLAG_NONE
-				, IID_ID3D12Fence
-				, (void**)&m_fence
-				) );
+			, D3D12_FENCE_FLAG_NONE
+			, IID_ID3D12Fence
+			, (void**)&m_fence
+			) );
 
 		for (uint32_t ii = 0; ii < BX_COUNTOF(m_commandList); ++ii)
 		{
 			DX_CHECK(_device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT
-					, IID_ID3D12CommandAllocator
-					, (void**)&m_commandList[ii].m_commandAllocator
-					) );
+				, IID_ID3D12CommandAllocator
+				, (void**)&m_commandList[ii].m_commandAllocator
+				) );
 
 			DX_CHECK(_device->CreateCommandList(0
-					, D3D12_COMMAND_LIST_TYPE_DIRECT
-					, m_commandList[ii].m_commandAllocator
-					, NULL
-					, IID_ID3D12GraphicsCommandList
-					, (void**)&m_commandList[ii].m_commandList
-					) );
+				, D3D12_COMMAND_LIST_TYPE_DIRECT
+				, m_commandList[ii].m_commandAllocator
+				, NULL
+				, IID_ID3D12GraphicsCommandList
+				, (void**)&m_commandList[ii].m_commandList
+				) );
 
 			DX_CHECK(m_commandList[ii].m_commandList->Close() );
 		}
@@ -3819,10 +3819,10 @@ data.NumQualityLevels = 0;
 		};
 
 		DX_CHECK(device->CreateCommandSignature(&drawCommandSignature
-				, rootSignature
-				, IID_ID3D12CommandSignature
-				, (void**)&m_commandSignature[Draw]
-				) );
+			, rootSignature
+			, IID_ID3D12CommandSignature
+			, (void**)&m_commandSignature[Draw]
+			) );
 
 		D3D12_INDIRECT_ARGUMENT_DESC drawIndexedArgDesc[] =
 		{
@@ -3845,10 +3845,10 @@ data.NumQualityLevels = 0;
 		};
 
 		DX_CHECK(device->CreateCommandSignature(&drawIndexedCommandSignature
-				, rootSignature
-				, IID_ID3D12CommandSignature
-				, (void**)&m_commandSignature[DrawIndexed]
-				) );
+			, rootSignature
+			, IID_ID3D12CommandSignature
+			, (void**)&m_commandSignature[DrawIndexed]
+			) );
 
 		m_cmds[Draw       ] = BX_ALLOC(g_allocator, m_maxDrawPerBatch*sizeof(DrawIndirectCommand) );
 		m_cmds[DrawIndexed] = BX_ALLOC(g_allocator, m_maxDrawPerBatch*sizeof(DrawIndexedIndirectCommand) );
@@ -5391,9 +5391,9 @@ data.NumQualityLevels = 0;
 		queryHeapDesc.NodeMask = 1;
 		queryHeapDesc.Type     = D3D12_QUERY_HEAP_TYPE_OCCLUSION;
 		DX_CHECK(s_renderD3D12->m_device->CreateQueryHeap(&queryHeapDesc
-				, IID_ID3D12QueryHeap
-				, (void**)&m_queryHeap
-				) );
+			, IID_ID3D12QueryHeap
+			, (void**)&m_queryHeap
+			) );
 
 		const uint32_t size = BX_COUNTOF(m_handle)*sizeof(uint64_t);
 		m_readback = createCommittedResource(s_renderD3D12->m_device

+ 4 - 3
src/renderer_gl.cpp

@@ -5270,7 +5270,7 @@ namespace bgfx { namespace gl
 			&& !s_textureFormat[m_requestedFormat].m_supported
 			&& !s_renderGL->m_textureSwizzleSupport
 			;
-		const bool unpackRowLength = BX_IGNORE_C4127(!!BGFX_CONFIG_RENDERER_OPENGL || s_extension[Extension::EXT_unpack_subimage].m_supported);
+		const bool unpackRowLength = !!BGFX_CONFIG_RENDERER_OPENGL || s_extension[Extension::EXT_unpack_subimage].m_supported;
 		const bool compressed      = bimg::isCompressed(bimg::TextureFormat::Enum(m_requestedFormat) );
 		const bool convert         = false
 			|| (compressed && m_textureFormat != m_requestedFormat)
@@ -5325,8 +5325,9 @@ namespace bgfx { namespace gl
 				srcpitch = rectpitch;
 			}
 
-			if (!unpackRowLength
-			&&  !convert)
+			if (BX_IGNORE_C4127(true
+			&&  !unpackRowLength
+			&&  !convert) )
 			{
 				bimg::imageCopy(temp, width, height, 1, bpp, srcpitch, data);
 				data = temp;