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>
This commit is contained in:
Boris Brezillon 2022-06-09 15:58:05 +02:00
parent ee1a0a0772
commit 185bae4c60
4 changed files with 16 additions and 16 deletions

View file

@ -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;

View file

@ -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)) ||

View file

@ -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;

View file

@ -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;