Advertisement
Guest User

Untitled

a guest
Sep 17th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 5.83 KB | None | 0 0
  1. diff --git a/src/backend/dx12/src/lib.rs b/src/backend/dx12/src/lib.rs
  2. index 553d93d3..b101e335 100644
  3. --- a/src/backend/dx12/src/lib.rs
  4. +++ b/src/backend/dx12/src/lib.rs
  5. @@ -709,25 +709,29 @@ impl hal::Instance for Instance {
  6.          let mut cur_index = 0;
  7.          let mut adapters = Vec::new();
  8.          loop {
  9. -            let adapter = {
  10. -                let mut adapter: *mut dxgi::IDXGIAdapter1 = ptr::null_mut();
  11. -                let hr = unsafe {
  12. -                    self.factory
  13. -                        .EnumAdapters1(cur_index, &mut adapter as *mut *mut _)
  14. -                };
  15. +            let adapter = unsafe {
  16. +                let mut ptr: *mut dxgi::IDXGIAdapter1 = ptr::null_mut();
  17. +                let hr = self.factory
  18. +                    .EnumAdapters1(cur_index, &mut ptr as *mut *mut _);
  19.  
  20.                  if hr == winerror::DXGI_ERROR_NOT_FOUND {
  21.                      break;
  22.                  }
  23.  
  24. -                unsafe { ComPtr::from_raw(adapter as *mut dxgi1_2::IDXGIAdapter2) }
  25. +                ComPtr::from_raw(ptr as *mut dxgi1_2::IDXGIAdapter2)
  26. +            };
  27. +
  28. +            let real_adapter = unsafe {
  29. +                let mut ptr = ptr::null_mut();
  30. +                adapter.QueryInterface(&dxgi1_4::IDXGIAdapter3::uuidof(), &mut ptr);
  31. +                ComPtr::from_raw(ptr as *mut dxgi1_4::IDXGIAdapter3)
  32.              };
  33.  
  34.              cur_index += 1;
  35.  
  36.              // Check for D3D12 support
  37.              // Create temporaty device to get physical device information
  38. -            let device = {
  39. +            /*let device = {
  40.                  let mut device = ptr::null_mut();
  41.                  let hr = unsafe {
  42.                      d3d12::D3D12CreateDevice(
  43. @@ -742,7 +746,7 @@ impl hal::Instance for Instance {
  44.                  }
  45.  
  46.                  unsafe { ComPtr::<d3d12::ID3D12Device>::from_raw(device) }
  47. -            };
  48. +            };*/
  49.  
  50.              // We have found a possible adapter
  51.              // acquire the device information
  52. @@ -765,30 +769,30 @@ impl hal::Instance for Instance {
  53.                      DeviceType::VirtualGpu
  54.                  } else {
  55.                      DeviceType::DiscreteGpu
  56. -                },                
  57. +                },
  58.              };
  59.  
  60.              let mut features: d3d12::D3D12_FEATURE_DATA_D3D12_OPTIONS = unsafe { mem::zeroed() };
  61. -            assert_eq!(winerror::S_OK, unsafe {
  62. +            /*assert_eq!(winerror::S_OK, unsafe {
  63.                  device.CheckFeatureSupport(
  64.                      d3d12::D3D12_FEATURE_D3D12_OPTIONS,
  65.                      &mut features as *mut _ as *mut _,
  66.                      mem::size_of::<d3d12::D3D12_FEATURE_DATA_D3D12_OPTIONS>() as _,
  67.                  )
  68. -            });
  69. +            });*/
  70.  
  71.              let mut features_architecture: d3d12::D3D12_FEATURE_DATA_ARCHITECTURE =
  72.                  unsafe { mem::zeroed() };
  73. -            assert_eq!(winerror::S_OK, unsafe {
  74. +            /*assert_eq!(winerror::S_OK, unsafe {
  75.                  device.CheckFeatureSupport(
  76.                      d3d12::D3D12_FEATURE_ARCHITECTURE,
  77.                      &mut features_architecture as *mut _ as *mut _,
  78.                      mem::size_of::<d3d12::D3D12_FEATURE_DATA_ARCHITECTURE>() as _,
  79.                  )
  80. -            });
  81. +            });*/
  82.  
  83.              let depth_bounds_test_supported = {
  84. -                let mut features2: d3d12::D3D12_FEATURE_DATA_D3D12_OPTIONS2 =
  85. +                /*let mut features2: d3d12::D3D12_FEATURE_DATA_D3D12_OPTIONS2 =
  86.                      unsafe { mem::zeroed() };
  87.                  let hr = unsafe {
  88.                      device.CheckFeatureSupport(
  89. @@ -801,11 +805,12 @@ impl hal::Instance for Instance {
  90.                      features2.DepthBoundsTestSupported != 0
  91.                  } else {
  92.                      false
  93. -                }
  94. +                }*/
  95. +                false
  96.              };
  97.  
  98.              let mut format_properties = [f::Properties::default(); f::NUM_FORMATS];
  99. -            for (i, props) in &mut format_properties.iter_mut().enumerate().skip(1) {
  100. +            /*for (i, props) in &mut format_properties.iter_mut().enumerate().skip(1) {
  101.                  let format: f::Format = unsafe { mem::transmute(i as u32) };
  102.                  let mut data = d3d12::D3D12_FEATURE_DATA_FORMAT_SUPPORT {
  103.                      Format: match conv::map_format(format) {
  104. @@ -879,7 +884,7 @@ impl hal::Instance for Instance {
  105.                      }
  106.                  }
  107.                  //TODO: blits, linear tiling
  108. -            }
  109. +            }*/
  110.  
  111.              let heterogeneous_resource_heaps =
  112.                  features.ResourceHeapTier != d3d12::D3D12_RESOURCE_HEAP_TIER_1;
  113. @@ -995,7 +1000,7 @@ impl hal::Instance for Instance {
  114.  
  115.              let memory_heaps = {
  116.                  // Get the IDXGIAdapter3 from the created device to query video memory information.
  117. -                let adapter_id = unsafe { device.GetAdapterLuid() };
  118. +                /*let adapter_id = unsafe { device.GetAdapterLuid() };
  119.                  let adapter = {
  120.                      let mut adapter: *mut dxgi1_4::IDXGIAdapter3 = ptr::null_mut();
  121.                      unsafe {
  122. @@ -1009,13 +1014,13 @@ impl hal::Instance for Instance {
  123.                          );
  124.                          ComPtr::from_raw(adapter)
  125.                      }
  126. -                };
  127. +                };*/
  128.  
  129.                  let query_memory = |segment: dxgi1_4::DXGI_MEMORY_SEGMENT_GROUP| unsafe {
  130.                      let mut mem_info: dxgi1_4::DXGI_QUERY_VIDEO_MEMORY_INFO = mem::uninitialized();
  131.                      assert_eq!(
  132.                          winerror::S_OK,
  133. -                        adapter.QueryVideoMemoryInfo(0, segment, &mut mem_info,)
  134. +                        real_adapter.QueryVideoMemoryInfo(0, segment, &mut mem_info,)
  135.                      );
  136.                      mem_info.Budget
  137.                  };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement