@ -15,6 +15,7 @@ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// CHANGELOG
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// (minor and older changes stripped away, please see git history for details)
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//  2024-02-12: DirectX9: Using RGBA format when supported by the driver to avoid CPU side conversion. (#6575)
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//  2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//  2021-06-29: Reorganized backend to pull data from a single structure to facilitate usage with multiple-contexts (all g_XXXX access changed to bd->XXXX).
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					//  2021-06-25: DirectX9: Explicitly disable texture state stages after >= 1.
  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -312,6 +313,24 @@ void ImGui_ImplDX9_Shutdown() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    IM_DELETE ( bd ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  bool  ImGui_ImplDX9_CheckFormatSupport ( IDirect3DDevice9 *  pDevice ,  D3DFORMAT  format )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    IDirect3D9 *  pd3d  =  nullptr ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( pDevice - > GetDirect3D ( & pd3d )  ! =  D3D_OK )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    D3DDEVICE_CREATION_PARAMETERS  param  =  { } ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    D3DDISPLAYMODE  mode  =  { } ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( pDevice - > GetCreationParameters ( & param )  ! =  D3D_OK  | |  pDevice - > GetDisplayMode ( 0 ,  & mode )  ! =  D3D_OK )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        pd3d - > Release ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Font texture should support linear filter, color blend and write to render-target
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  support  =  ( pd3d - > CheckDeviceFormat ( param . AdapterOrdinal ,  param . DeviceType ,  mode . Format ,  D3DUSAGE_DYNAMIC  |  D3DUSAGE_QUERY_FILTER  |  D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING ,  D3DRTYPE_TEXTURE ,  format ) )  = =  D3D_OK ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    pd3d - > Release ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  support ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  bool  ImGui_ImplDX9_CreateFontsTexture ( )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Build texture atlas
   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -323,18 +342,21 @@ static bool ImGui_ImplDX9_CreateFontsTexture() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Convert RGBA32 to BGRA32 (because RGBA32 is not well supported by DX9 devices)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# ifndef IMGUI_USE_BGRA_PACKED_COLOR  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( io . Fonts - > TexPixelsUseColors )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  bool  rgba_support  =  ImGui_ImplDX9_CheckFormatSupport ( bd - > pd3dDevice ,  D3DFMT_A8B8G8R8 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! rgba_support  & &  io . Fonts - > TexPixelsUseColors )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImU32 *  dst_start  =  ( ImU32 * ) ImGui : : MemAlloc ( ( size_t ) width  *  height  *  bytes_per_pixel ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        for  ( ImU32 *  src  =  ( ImU32 * ) pixels ,  * dst  =  dst_start ,  * dst_end  =  dst_start  +  ( size_t ) width  *  height ;  dst  <  dst_end ;  src + + ,  dst + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            * dst  =  IMGUI_COL_TO_DX9_ARGB ( * src ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        pixels  =  ( unsigned  char * ) dst_start ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# else  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  bool  rgba_support  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Upload texture to graphics system
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bd - > FontTexture  =  nullptr ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( bd - > pd3dDevice - > CreateTexture ( width ,  height ,  1 ,  D3DUSAGE_DYNAMIC ,  D3DFMT_A8R8G8B8 ,  D3DPOOL_DEFAULT ,  & bd - > FontTexture ,  nullptr )  <  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( bd - > pd3dDevice - > CreateTexture ( width ,  height ,  1 ,  D3DUSAGE_DYNAMIC ,  rgba_support  ?  D3DFMT_A8B8G8R8  :  D3DFMT_A8R8G8B8 ,  D3DPOOL_DEFAULT ,  & bd - > FontTexture ,  nullptr )  <  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    D3DLOCKED_RECT  tex_locked_rect ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( bd - > FontTexture - > LockRect ( 0 ,  & tex_locked_rect ,  nullptr ,  0 )  ! =  D3D_OK )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -347,7 +369,7 @@ static bool ImGui_ImplDX9_CreateFontsTexture() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    io . Fonts - > SetTexID ( ( ImTextureID ) bd - > FontTexture ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# ifndef IMGUI_USE_BGRA_PACKED_COLOR  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( io . Fonts - > TexPixelsUseColors )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! rgba_support  & &  io . Fonts - > TexPixelsUseColors )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ImGui : : MemFree ( pixels ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif