SoldierOfLight

Members
  • Content count

    204
  • Joined

  • Last visited

Community Reputation

2150 Excellent

About SoldierOfLight

  • Rank
    Member

Personal Information

  • Interests
    Programming
  1. That's correct, Min/Max filtering is tied to TILED_RESOURCES_TIER_2 in D3D12.
  2. Have you set your viewport and scissor? Have you tried PIX for windows or the D3D12 debug layer?
  3. DX11 Enumoutputs do not work in Win10

    If you picked an adapter from the factory, then why are you creating D3D_DRIVER_TYPE_HARDWARE instead of passing that adapter into D3D11CreateDevice? Internally, D3D11 will create a factory and EnumAdapters(0) on it if you don't provide it an adapter. That's why your pointer compare doesn't work... the adapters may be logically the same, but they won't be the same pointer.
  4. DX12 Vulkan/D3D11/D3D12 Interop

    NVIDIA does have extensions for interop with D3D11 and D3D12 I believe. See: VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32
  5. DX11 Get pointer of backbuffer?

    I'm not 100% positive, I'd have to try it to check, but I think that if you QueryInterface the resource for IDXGIResource/IDXGIObject and use GetParent, it should return the swapchain instead of the device. I am curious - what's the reason you need to get at these objects?
  6. DX11 Get pointer of backbuffer?

    If the context is set up so that you're rendering to the backbuffer already, you can use OMGetRenderTargets from the immediate context to get the view, and then GetResource on the view to get the back buffer.
  7. You're probably looking for ID3D11Device::CreateDeferredContext. You should also check out the Immediate and Deferred Rendering topic.
  8. DX11 Dispatch causes flush?

    I'd say it's up to the driver. Some drivers might inspect the resources that are involved and only synchronize as necessary, while others might not do that inspection and would synchronize always. The only thing that the API has to guarantee is that from any observable point of view, they have to execute in order - but that only applies if there's a way you could observe the ordering.
  9. So to get this straight, you're copying from an unaligned mip to a larger mip? I misinterpreted the question, and assumed you were going from a mip in one texture to a same-sized mip of a different texture. According to the D3D spec, unaligned textures still have all 4 texels present in the physical data, but as far as I can tell, it doesn't specify what their contents have to be. What you're seeing here appears to be copying the full 4x4 region into the larger texture and seeing the results. I'm not sure what you'd expect to happen in this case - are you expecting black around the border?
  10. Game uses iGPU instead of dedicated GPU

    @mhagain is correct, that's the easiest way to get what you want - the discrete AMD GPU enumerated as adapter 0 and appearing to be connected to the laptop output. @iedoc isn't entirely incorrect. On these hybrid laptops, the OS will essentially do what he suggested under the covers, using an efficient cross-adapter copy mechanism with only GPU-side synchronization, no CPU synchronization. Also, you don't typically have to worry about the WARP adapter being enumerated first, it'll almost always be last. The general sorting order that DXGI uses is: The adapter with the primary output. Other hardware adapters with outputs. Software adapters with outputs (can happen in some circumstances, but not a common scenario). Hardware adapters without outputs. Software adapters without outputs.
  11. You should be able to provide a null source box, which is equivalent to applying the whole source subresource to the specified offset in the dest (which should be (0, 0, 0) if you're copying the whole mip). In general, you should always round up the size of the copy to block dimensions, even if the texture doesn't have the logical dimensions to support it. So a 1x1 BC3 mip would be copied as if it was 4x4.
  12. DX11 ID3D11Query reporting weird results

    As far as counters go, they're all for IHV-specific counters. In D3D10 there were API-defined counters, but they were deprecated in D3D11. The current model for performance counters is the plugin model exposed by PIX. Also I just checked, and apparently I was wrong about SetStablePowerState, we did keep it around, we just moved it from requiring the D3D12 debug layers, to requiring developer mode. My bad.
  13. DX11 ID3D11Query reporting weird results

    That's a great idea in theory, except that we've deprecated this API in recent Windows 10 releases (I don't recall exactly when), so you'll need to be on a slightly older build. What we found is that given your example of a base of 1500 and a boost of 1650, the GPU is able to maintain that boosted clock rate nearly indefinitely. So using SetStablePowerState produces a completely artificial scenario that doesn't mimic what would happen on real world machines, making it relatively useless for profiling.
  14. According to https://msdn.microsoft.com/en-us/library/windows/desktop/bb174549(v=vs.85).aspx:
  15. Fence-Based Resource Management

    That probably means something along the lines of having multiple command lists, each referencing different resources, and re-using them as it becomes safe to overwrite the contents of those resources.