Apply swapchainDesc fix from FNA3D, add cdefines.h to CMakeLists
							parent
							
								
									49c64a230f
								
							
						
					
					
						commit
						1637401a8a
					
				|  | @ -55,6 +55,7 @@ add_library(Refresh | |||
| 	# Internal Headers | ||||
| 	src/Refresh_Driver.h | ||||
| 	src/Refresh_Driver_Vulkan_vkfuncs.h | ||||
| 	Refresh_Driver_D3D11_cdefines.h | ||||
| 	# Source Files | ||||
| 	src/Refresh.c | ||||
| 	src/Refresh_Driver_D3D11.c | ||||
|  |  | |||
|  | @ -825,50 +825,12 @@ static D3D11WindowData* D3D11_INTERNAL_FetchWindowData( | |||
| 	return (D3D11WindowData*) SDL_GetWindowData(windowHandle, WINDOW_DATA); | ||||
| } | ||||
| 
 | ||||
| static void D3D11_INTERNAL_ResolveSwapChainModeDescription( | ||||
| 	IUnknown *device, | ||||
| 	IDXGIAdapter *adapter, | ||||
| 	IDXGIFactory1 *factory, | ||||
| 	HWND window, | ||||
| 	DXGI_MODE_DESC *modeDescription, | ||||
| 	DXGI_MODE_DESC *swapChainDescription | ||||
| ) { | ||||
| 	HMONITOR monitor; | ||||
| 	int iAdapter = 0, iOutput; | ||||
| 	IDXGIAdapter1* pAdapter; | ||||
| 	IDXGIOutput *output; | ||||
| 	DXGI_OUTPUT_DESC description; | ||||
| 
 | ||||
| 	/* Find the output (on any adapter) attached to the monitor that holds our window */ | ||||
| 	monitor = MonitorFromWindow(window, MONITOR_DEFAULTTOPRIMARY); | ||||
| 	while (SUCCEEDED(IDXGIFactory1_EnumAdapters1(factory, iAdapter++, &pAdapter))) | ||||
| 	{ | ||||
| 		iOutput = 0; | ||||
| 		while (SUCCEEDED(IDXGIAdapter_EnumOutputs(pAdapter, iOutput++, &output))) | ||||
| 		{ | ||||
| 			IDXGIOutput_GetDesc(output, &description); | ||||
| 			if (description.Monitor == monitor) | ||||
| 			{ | ||||
| 				if (SUCCEEDED(IDXGIOutput_FindClosestMatchingMode(output, modeDescription, swapChainDescription, device))) | ||||
| 				{ | ||||
| 					IDXGIOutput_Release(output); | ||||
| 					IDXGIAdapter1_Release(pAdapter); | ||||
| 					return; | ||||
| 				} | ||||
| 			} | ||||
| 			IDXGIOutput_Release(output); | ||||
| 		} | ||||
| 		IDXGIAdapter1_Release(pAdapter); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static uint8_t D3D11_INTERNAL_CreateSwapchain( | ||||
| 	D3D11Renderer *renderer, | ||||
| 	D3D11WindowData *windowData | ||||
| ) { | ||||
| 	SDL_SysWMinfo info; | ||||
| 	HWND dxgiHandle; | ||||
| 	DXGI_MODE_DESC swapchainBufferDesc; | ||||
| 	DXGI_SWAP_CHAIN_DESC swapchainDesc; | ||||
| 	IDXGIFactory1 *pParent; | ||||
| 	IDXGISwapChain *swapchain; | ||||
|  | @ -881,26 +843,15 @@ static uint8_t D3D11_INTERNAL_CreateSwapchain( | |||
| 	dxgiHandle = info.info.win.window; | ||||
| 
 | ||||
| 	/* Initialize the swapchain buffer descriptor */ | ||||
| 	swapchainBufferDesc.Width = 0; | ||||
| 	swapchainBufferDesc.Height = 0; | ||||
| 	swapchainBufferDesc.RefreshRate.Numerator = 0; | ||||
| 	swapchainBufferDesc.RefreshRate.Denominator = 0; | ||||
| 	swapchainBufferDesc.Format = RefreshToD3D11_TextureFormat[REFRESH_TEXTUREFORMAT_R8G8B8A8]; | ||||
| 	swapchainBufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED; | ||||
| 	swapchainBufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED; | ||||
| 	swapchainDesc.BufferDesc.Width = 0; | ||||
| 	swapchainDesc.BufferDesc.Height = 0; | ||||
| 	swapchainDesc.BufferDesc.RefreshRate.Numerator = 0; | ||||
| 	swapchainDesc.BufferDesc.RefreshRate.Denominator = 0; | ||||
| 	swapchainDesc.BufferDesc.Format = RefreshToD3D11_TextureFormat[REFRESH_TEXTUREFORMAT_R8G8B8A8]; | ||||
| 	swapchainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED; | ||||
| 	swapchainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED; | ||||
| 
 | ||||
| 	/* Get the closest matching mode we can from the current monitor */ | ||||
| 	D3D11_INTERNAL_ResolveSwapChainModeDescription( | ||||
| 		(IUnknown*) renderer->device, | ||||
| 		(IDXGIAdapter*) renderer->adapter, | ||||
| 		(IDXGIFactory1*) renderer->factory, | ||||
| 		dxgiHandle, | ||||
| 		&swapchainBufferDesc, | ||||
| 		&swapchainDesc.BufferDesc | ||||
| 	); | ||||
| 
 | ||||
| 	/* Initialize the swapchain descriptor */ | ||||
| 	swapchainDesc.BufferDesc = swapchainBufferDesc; /* FIXME: I think this is wrong, and it's wrong in FNA3D too! */ | ||||
| 	/* Initialize the rest of the swapchain descriptor */ | ||||
| 	swapchainDesc.SampleDesc.Count = 1; | ||||
| 	swapchainDesc.SampleDesc.Quality = 0; | ||||
| 	swapchainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue