Mesa (main): dzn: remove all usage of ComPtr<T>
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Apr 19 16:29:45 UTC 2022
Module: Mesa
Branch: main
Commit: 5f17d070a9680cd36ba3b7f7a90d5c13d2319f6a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5f17d070a9680cd36ba3b7f7a90d5c13d2319f6a
Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date: Fri Mar 25 13:15:44 2022 +0100
dzn: remove all usage of ComPtr<T>
Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15816>
---
src/microsoft/vulkan/dzn_cmd_buffer.cpp | 5 +++--
src/microsoft/vulkan/dzn_device.cpp | 29 ++++++++++++++++++++---------
src/microsoft/vulkan/dzn_private.h | 3 ---
src/microsoft/vulkan/dzn_query.cpp | 24 +++++++++++++++++-------
src/microsoft/vulkan/dzn_util.cpp | 24 +++++++++++++++---------
5 files changed, 55 insertions(+), 30 deletions(-)
diff --git a/src/microsoft/vulkan/dzn_cmd_buffer.cpp b/src/microsoft/vulkan/dzn_cmd_buffer.cpp
index 5e7f7ffcf89..c5a7bdcf0a8 100644
--- a/src/microsoft/vulkan/dzn_cmd_buffer.cpp
+++ b/src/microsoft/vulkan/dzn_cmd_buffer.cpp
@@ -828,7 +828,7 @@ dzn_cmd_buffer_alloc_internal_buf(dzn_cmd_buffer *cmdbuf,
ID3D12Resource **out)
{
dzn_device *device = container_of(cmdbuf->vk.base.device, dzn_device, vk);
- ComPtr<ID3D12Resource> res;
+ ID3D12Resource *res;
*out = NULL;
/* Align size on 64k (the default alignment) */
@@ -863,10 +863,11 @@ dzn_cmd_buffer_alloc_internal_buf(dzn_cmd_buffer *cmdbuf,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (!entry) {
cmdbuf->error = vk_error(device, VK_ERROR_OUT_OF_DEVICE_MEMORY);
+ res->Release();
return cmdbuf->error;
}
- entry->res = res.Detach();
+ entry->res = res;
list_addtail(&entry->link, &cmdbuf->internal_bufs);
*out = entry->res;
return VK_SUCCESS;
diff --git a/src/microsoft/vulkan/dzn_device.cpp b/src/microsoft/vulkan/dzn_device.cpp
index 2fabb186538..f84926b03d8 100644
--- a/src/microsoft/vulkan/dzn_device.cpp
+++ b/src/microsoft/vulkan/dzn_device.cpp
@@ -336,14 +336,14 @@ dzn_physical_device_cache_caps(dzn_physical_device *pdev)
.NodeMask = 0,
};
- ComPtr<ID3D12CommandQueue> cmdqueue;
-
+ ID3D12CommandQueue *cmdqueue;
pdev->dev->CreateCommandQueue(&queue_desc,
IID_PPV_ARGS(&cmdqueue));
uint64_t ts_freq;
cmdqueue->GetTimestampFrequency(&ts_freq);
pdev->timestamp_period = 1000000000.0f / ts_freq;
+ cmdqueue->Release();
}
static void
@@ -901,21 +901,28 @@ dzn_EnumeratePhysicalDevices(VkInstance inst,
VK_FROM_HANDLE(dzn_instance, instance, inst);
if (!instance->physical_devices_enumerated) {
- ComPtr<IDXGIFactory4> factory = dxgi_get_factory(false);
- ComPtr<IDXGIAdapter1> adapter(NULL);
+ IDXGIFactory4 *factory = dxgi_get_factory(false);
+ IDXGIAdapter1 *adapter = NULL;
for (UINT i = 0; SUCCEEDED(factory->EnumAdapters1(i, &adapter)); ++i) {
DXGI_ADAPTER_DESC1 desc;
adapter->GetDesc1(&desc);
if (instance->debug_flags & DZN_DEBUG_WARP) {
- if ((desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) == 0)
+ if ((desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) == 0) {
+ adapter->Release();
continue;
+ }
}
VkResult result =
- dzn_physical_device_create(instance, adapter.Get(), &desc);
- if (result != VK_SUCCESS)
+ dzn_physical_device_create(instance, adapter, &desc);
+
+ adapter->Release();
+ if (result != VK_SUCCESS) {
+ factory->Release();
return result;
+ }
}
+ factory->Release();
}
VK_OUTARRAY_MAKE_TYPED(VkPhysicalDevice, out, pPhysicalDevices,
@@ -1788,7 +1795,7 @@ dzn_device_create_root_sig(dzn_device *device,
{
dzn_instance *instance =
container_of(device->vk.physical->instance, dzn_instance, vk);
- ComPtr<ID3DBlob> sig, error;
+ ID3DBlob *sig, *error;
if (FAILED(instance->d3d12.serialize_root_sig(desc,
&sig, &error))) {
@@ -1801,6 +1808,7 @@ dzn_device_create_root_sig(dzn_device *device,
error_msg);
}
+ error->Release();
return NULL;
}
@@ -1808,9 +1816,12 @@ dzn_device_create_root_sig(dzn_device *device,
if (FAILED(device->dev->CreateRootSignature(0,
sig->GetBufferPointer(),
sig->GetBufferSize(),
- IID_PPV_ARGS(&root_sig))))
+ IID_PPV_ARGS(&root_sig)))) {
+ sig->Release();
return NULL;
+ }
+ sig->Release();
return root_sig;
}
diff --git a/src/microsoft/vulkan/dzn_private.h b/src/microsoft/vulkan/dzn_private.h
index d6145dfaa0c..adb32295845 100644
--- a/src/microsoft/vulkan/dzn_private.h
+++ b/src/microsoft/vulkan/dzn_private.h
@@ -55,12 +55,9 @@
#define D3D12_IGNORE_SDK_LAYERS
#include <directx/d3d12.h>
-#include <wrl/client.h>
#include "spirv_to_dxil.h"
-using Microsoft::WRL::ComPtr;
-
#define DZN_SWAP(a, b) \
do { \
auto __tmp = a; \
diff --git a/src/microsoft/vulkan/dzn_query.cpp b/src/microsoft/vulkan/dzn_query.cpp
index c16ae0abe39..cecf0aed4f4 100644
--- a/src/microsoft/vulkan/dzn_query.cpp
+++ b/src/microsoft/vulkan/dzn_query.cpp
@@ -264,16 +264,19 @@ dzn_GetQueryPoolResults(VkDevice device,
uint64_t available = 0;
if (flags & VK_QUERY_RESULT_WAIT_BIT) {
- ComPtr<ID3D12Fence> query_fence(NULL);
+ ID3D12Fence *query_fence = NULL;
uint64_t query_fence_val = 0;
while (true) {
mtx_lock(&qpool->queries_lock);
- query_fence = ComPtr<ID3D12Fence>(query->fence);
+ if (query->fence) {
+ query_fence = query->fence;
+ query_fence->AddRef();
+ }
query_fence_val = query->fence_value;
mtx_unlock(&qpool->queries_lock);
- if (query_fence.Get())
+ if (query_fence)
break;
/* Check again in 10ms.
@@ -283,16 +286,23 @@ dzn_GetQueryPoolResults(VkDevice device,
}
query_fence->SetEventOnCompletion(query_fence_val, NULL);
+ query_fence->Release();
available = UINT64_MAX;
} else {
+ ID3D12Fence *query_fence = NULL;
mtx_lock(&qpool->queries_lock);
- ComPtr<ID3D12Fence> query_fence(query->fence);
+ if (query->fence) {
+ query_fence = query->fence;
+ query_fence->AddRef();
+ }
uint64_t query_fence_val = query->fence_value;
mtx_unlock(&qpool->queries_lock);
- if (query_fence.Get() &&
- query_fence->GetCompletedValue() >= query_fence_val)
- available = UINT64_MAX;
+ if (query_fence) {
+ if (query_fence->GetCompletedValue() >= query_fence_val)
+ available = UINT64_MAX;
+ query_fence->Release();
+ }
}
if (qpool->heap_type != D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS) {
diff --git a/src/microsoft/vulkan/dzn_util.cpp b/src/microsoft/vulkan/dzn_util.cpp
index f18776be2fb..ce428984f62 100644
--- a/src/microsoft/vulkan/dzn_util.cpp
+++ b/src/microsoft/vulkan/dzn_util.cpp
@@ -67,7 +67,7 @@ dxgi_get_factory(bool debug)
return factory;
}
-static ComPtr<ID3D12Debug>
+static ID3D12Debug *
get_debug_interface()
{
typedef HRESULT(WINAPI *PFN_D3D12_GET_DEBUG_INTERFACE)(REFIID riid, void **ppFactory);
@@ -85,7 +85,7 @@ get_debug_interface()
return NULL;
}
- ComPtr<ID3D12Debug> debug;
+ ID3D12Debug *debug;
if (FAILED(D3D12GetDebugInterface(IID_PPV_ARGS(&debug)))) {
mesa_loge("D3D12GetDebugInterface failed\n");
return NULL;
@@ -97,19 +97,25 @@ get_debug_interface()
void
d3d12_enable_debug_layer()
{
- ComPtr<ID3D12Debug> debug = get_debug_interface();
- if (debug)
+ ID3D12Debug *debug = get_debug_interface();
+ if (debug) {
debug->EnableDebugLayer();
+ debug->Release();
+ }
}
void
d3d12_enable_gpu_validation()
{
- ComPtr<ID3D12Debug> debug = get_debug_interface();
- ComPtr<ID3D12Debug3> debug3;
- if (debug &&
- SUCCEEDED(debug->QueryInterface(IID_PPV_ARGS(&debug3))))
- debug3->SetEnableGPUBasedValidation(true);
+ ID3D12Debug *debug = get_debug_interface();
+ if (debug) {
+ ID3D12Debug3 *debug3;
+ if (SUCCEEDED(debug->QueryInterface(IID_PPV_ARGS(&debug3)))) {
+ debug3->SetEnableGPUBasedValidation(true);
+ debug3->Release();
+ }
+ debug->Release();
+ }
}
ID3D12Device1 *
More information about the mesa-commit
mailing list