mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-09 21:47:47 +00:00
D3D12: Cache DXGI keyed mutexes on the external image.
Maintains a 11on12 resource cache on the external image to prevent re-creating the wrapped resource then flushing it per produced texture. To prevent unbounded growth, a basic cap is used which gets cleared. This change fixes signficant CPU time spent in the WebGPU command decoder for video import workloads and excessive memory overhead from swap chain buffers. Fixed: dawn:625 Change-Id: I72c07b02f6ab6877a9f21758650962c895933bf9 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51421 Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
f209e8ba83
commit
31f039350b
@@ -29,6 +29,9 @@ struct ID3D12Device;
|
||||
struct ID3D12Resource;
|
||||
|
||||
namespace dawn_native { namespace d3d12 {
|
||||
|
||||
class D3D11on12ResourceCache;
|
||||
|
||||
DAWN_NATIVE_EXPORT Microsoft::WRL::ComPtr<ID3D12Device> GetD3D12Device(WGPUDevice device);
|
||||
DAWN_NATIVE_EXPORT DawnSwapChainImplementation CreateNativeSwapChainImpl(WGPUDevice device,
|
||||
HWND window);
|
||||
@@ -62,6 +65,8 @@ namespace dawn_native { namespace d3d12 {
|
||||
|
||||
class DAWN_NATIVE_EXPORT ExternalImageDXGI {
|
||||
public:
|
||||
~ExternalImageDXGI();
|
||||
|
||||
// Note: SharedHandle must be a handle to a texture object.
|
||||
static std::unique_ptr<ExternalImageDXGI> Create(
|
||||
WGPUDevice device,
|
||||
@@ -85,6 +90,8 @@ namespace dawn_native { namespace d3d12 {
|
||||
WGPUTextureFormat mFormat;
|
||||
uint32_t mMipLevelCount;
|
||||
uint32_t mSampleCount;
|
||||
|
||||
std::unique_ptr<D3D11on12ResourceCache> mD3D11on12ResourceCache;
|
||||
};
|
||||
|
||||
struct DAWN_NATIVE_EXPORT AdapterDiscoveryOptions : public AdapterDiscoveryOptionsBase {
|
||||
|
||||
Reference in New Issue
Block a user