summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@collabora.com>2022-06-09 15:58:05 +0200
committerBoris Brezillon <boris.brezillon@collabora.com>2022-06-09 08:20:54 -0700
commit185bae4c6022ad22d7cfe2b9b174f35873f39c16 (patch)
treee27c3a25015cc6feec35c7067ddf11d5acd82b22
parentee1a0a0772d0aaf4f5124d451f6a087bc6910b58 (diff)
dzn: Switch to ID3D12Device2
So we can use the CreatePipelineState method and unlock new features like depth-bounds tests. Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16948>
-rw-r--r--src/microsoft/vulkan/dzn_cmd_buffer.c10
-rw-r--r--src/microsoft/vulkan/dzn_device.c8
-rw-r--r--src/microsoft/vulkan/dzn_private.h8
-rw-r--r--src/microsoft/vulkan/dzn_util.c6
4 files changed, 16 insertions, 16 deletions
diff --git a/src/microsoft/vulkan/dzn_cmd_buffer.c b/src/microsoft/vulkan/dzn_cmd_buffer.c
index cd77b2414c7..473c755b9d0 100644
--- a/src/microsoft/vulkan/dzn_cmd_buffer.c
+++ b/src/microsoft/vulkan/dzn_cmd_buffer.c
@@ -1436,7 +1436,7 @@ dzn_cmd_buffer_copy_buf2img_region(struct dzn_cmd_buffer *cmdbuf,
VK_FROM_HANDLE(dzn_buffer, src_buffer, info->srcBuffer);
VK_FROM_HANDLE(dzn_image, dst_image, info->dstImage);
- ID3D12Device1 *dev = device->dev;
+ ID3D12Device2 *dev = device->dev;
ID3D12GraphicsCommandList1 *cmdlist = cmdbuf->cmdlist;
const VkBufferImageCopy2 *region = &info->pRegions[r];
@@ -1511,7 +1511,7 @@ dzn_cmd_buffer_copy_img2buf_region(struct dzn_cmd_buffer *cmdbuf,
VK_FROM_HANDLE(dzn_image, src_image, info->srcImage);
VK_FROM_HANDLE(dzn_buffer, dst_buffer, info->dstBuffer);
- ID3D12Device1 *dev = device->dev;
+ ID3D12Device2 *dev = device->dev;
ID3D12GraphicsCommandList1 *cmdlist = cmdbuf->cmdlist;
const VkBufferImageCopy2 *region = &info->pRegions[r];
@@ -1586,7 +1586,7 @@ dzn_cmd_buffer_copy_img_chunk(struct dzn_cmd_buffer *cmdbuf,
VK_FROM_HANDLE(dzn_image, src, info->srcImage);
VK_FROM_HANDLE(dzn_image, dst, info->dstImage);
- ID3D12Device1 *dev = device->dev;
+ ID3D12Device2 *dev = device->dev;
ID3D12GraphicsCommandList1 *cmdlist = cmdbuf->cmdlist;
const VkImageCopy2 *region = &info->pRegions[r];
@@ -2046,7 +2046,7 @@ dzn_cmd_buffer_resolve_region(struct dzn_cmd_buffer *cmdbuf,
VK_FROM_HANDLE(dzn_image, src, info->srcImage);
VK_FROM_HANDLE(dzn_image, dst, info->dstImage);
- ID3D12Device1 *dev = device->dev;
+ ID3D12Device2 *dev = device->dev;
const VkImageResolve2 *region = &info->pRegions[r];
dzn_foreach_aspect(aspect, region->srcSubresource.aspectMask) {
@@ -2969,7 +2969,7 @@ dzn_CmdCopyImage2(VkCommandBuffer commandBuffer,
};
if (requires_temp_res) {
- ID3D12Device1 *dev = device->dev;
+ ID3D12Device2 *dev = device->dev;
VkImageAspectFlags aspect = 0;
uint64_t max_size = 0;
diff --git a/src/microsoft/vulkan/dzn_device.c b/src/microsoft/vulkan/dzn_device.c
index 457e91b6fbe..23e30a59757 100644
--- a/src/microsoft/vulkan/dzn_device.c
+++ b/src/microsoft/vulkan/dzn_device.c
@@ -497,7 +497,7 @@ dzn_physical_device_get_max_array_layers()
return dzn_physical_device_get_max_extent(false);
}
-static ID3D12Device1 *
+static ID3D12Device2 *
dzn_physical_device_get_d3d12_dev(struct dzn_physical_device *pdev)
{
struct dzn_instance *instance = container_of(pdev->vk.instance, struct dzn_instance, vk);
@@ -532,7 +532,7 @@ dzn_physical_device_get_format_support(struct dzn_physical_device *pdev,
.Format = dzn_image_get_dxgi_format(format, usage, aspects),
};
- ID3D12Device1 *dev = dzn_physical_device_get_d3d12_dev(pdev);
+ ID3D12Device2 *dev = dzn_physical_device_get_d3d12_dev(pdev);
HRESULT hres =
ID3D12Device1_CheckFeatureSupport(dev, D3D12_FEATURE_FORMAT_SUPPORT,
&dfmt_info, sizeof(dfmt_info));
@@ -589,7 +589,7 @@ dzn_physical_device_get_format_properties(struct dzn_physical_device *pdev,
return;
}
- ID3D12Device1 *dev = dzn_physical_device_get_d3d12_dev(pdev);
+ ID3D12Device2 *dev = dzn_physical_device_get_d3d12_dev(pdev);
*base_props = (VkFormatProperties) {
.linearTilingFeatures = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
@@ -733,7 +733,7 @@ dzn_physical_device_get_image_format_properties(struct dzn_physical_device *pdev
return VK_ERROR_FORMAT_NOT_SUPPORTED;
bool is_bgra4 = info->format == VK_FORMAT_B4G4R4A4_UNORM_PACK16;
- ID3D12Device1 *dev = dzn_physical_device_get_d3d12_dev(pdev);
+ ID3D12Device2 *dev = dzn_physical_device_get_d3d12_dev(pdev);
if ((info->type == VK_IMAGE_TYPE_1D && !(dfmt_info.Support1 & D3D12_FORMAT_SUPPORT1_TEXTURE1D)) ||
(info->type == VK_IMAGE_TYPE_2D && !(dfmt_info.Support1 & D3D12_FORMAT_SUPPORT1_TEXTURE2D)) ||
diff --git a/src/microsoft/vulkan/dzn_private.h b/src/microsoft/vulkan/dzn_private.h
index 78af26d90cb..3542d15052c 100644
--- a/src/microsoft/vulkan/dzn_private.h
+++ b/src/microsoft/vulkan/dzn_private.h
@@ -186,7 +186,7 @@ struct dzn_physical_device {
struct wsi_device wsi_device;
mtx_t dev_lock;
- ID3D12Device1 *dev;
+ ID3D12Device2 *dev;
D3D_FEATURE_LEVEL feature_level;
D3D12_FEATURE_DATA_ARCHITECTURE1 architecture;
D3D12_FEATURE_DATA_D3D12_OPTIONS options;
@@ -219,7 +219,7 @@ d3d12_enable_debug_layer(void);
void
d3d12_enable_gpu_validation(void);
-ID3D12Device1 *
+ID3D12Device2 *
d3d12_create_device(IDXGIAdapter1 *adapter, bool experimental_features);
struct dzn_queue {
@@ -235,7 +235,7 @@ struct dzn_device {
struct vk_device_extension_table enabled_extensions;
struct vk_device_dispatch_table cmd_dispatch;
- ID3D12Device1 *dev;
+ ID3D12Device2 *dev;
struct dzn_meta_indirect_draw indirect_draws[DZN_NUM_INDIRECT_DRAW_TYPES];
struct dzn_meta_triangle_fan_rewrite_index triangle_fan[DZN_NUM_INDEX_TYPE];
@@ -341,7 +341,7 @@ struct dzn_buffer_desc {
#define MAX_DESCS_PER_CBV_SRV_UAV_HEAP 1000000u
struct dzn_descriptor_heap {
- ID3D12Device1 *dev;
+ ID3D12Device2 *dev;
ID3D12DescriptorHeap *heap;
D3D12_DESCRIPTOR_HEAP_TYPE type;
SIZE_T cpu_base;
diff --git a/src/microsoft/vulkan/dzn_util.c b/src/microsoft/vulkan/dzn_util.c
index 7f15496a123..43af42048f7 100644
--- a/src/microsoft/vulkan/dzn_util.c
+++ b/src/microsoft/vulkan/dzn_util.c
@@ -333,7 +333,7 @@ d3d12_enable_gpu_validation(void)
}
}
-ID3D12Device1 *
+ID3D12Device2 *
d3d12_create_device(IDXGIAdapter1 *adapter, bool experimental_features)
{
typedef HRESULT(WINAPI *PFN_D3D12CREATEDEVICE)(IDXGIAdapter1 *, D3D_FEATURE_LEVEL, REFIID, void **);
@@ -364,9 +364,9 @@ d3d12_create_device(IDXGIAdapter1 *adapter, bool experimental_features)
return NULL;
}
- ID3D12Device1 *dev;
+ ID3D12Device2 *dev;
if (SUCCEEDED(D3D12CreateDevice(adapter, D3D_FEATURE_LEVEL_11_0,
- &IID_ID3D12Device1,
+ &IID_ID3D12Device2,
(void **)&dev)))
return dev;