mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
libs/vkd3d: Add support for sampler descriptors in root descriptor tables.
This commit is contained in:
@ -2267,8 +2267,8 @@ static void STDMETHODCALLTYPE d3d12_command_list_SetGraphicsRootSignature(ID3D12
|
|||||||
list->graphics_root_signature = rs;
|
list->graphics_root_signature = rs;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool vk_write_descriptor_set_from_d3d12_cbv_srv_uav_desc(VkWriteDescriptorSet *vk_descriptor_write,
|
static bool vk_write_descriptor_set_from_d3d12_desc(VkWriteDescriptorSet *vk_descriptor_write,
|
||||||
VkDescriptorImageInfo *vk_image_info, struct d3d12_cbv_srv_uav_desc *descriptor,
|
VkDescriptorImageInfo *vk_image_info, struct d3d12_desc *descriptor,
|
||||||
VkDescriptorSet vk_descriptor_set, uint32_t vk_binding)
|
VkDescriptorSet vk_descriptor_set, uint32_t vk_binding)
|
||||||
{
|
{
|
||||||
vk_descriptor_write->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
vk_descriptor_write->sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
|
||||||
@ -2309,6 +2309,14 @@ static bool vk_write_descriptor_set_from_d3d12_cbv_srv_uav_desc(VkWriteDescripto
|
|||||||
vk_descriptor_write->pImageInfo = vk_image_info;
|
vk_descriptor_write->pImageInfo = vk_image_info;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (descriptor->magic == VKD3D_DESCRIPTOR_MAGIC_SAMPLER)
|
||||||
|
{
|
||||||
|
vk_image_info->sampler = descriptor->u.vk_sampler;
|
||||||
|
vk_image_info->imageView = VK_NULL_HANDLE;
|
||||||
|
vk_image_info->imageLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||||
|
|
||||||
|
vk_descriptor_write->pImageInfo = vk_image_info;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FIXME("Unhandled descriptor %#x.\n", descriptor->magic);
|
FIXME("Unhandled descriptor %#x.\n", descriptor->magic);
|
||||||
@ -2328,8 +2336,8 @@ static void d3d12_command_list_set_descriptor_table(struct d3d12_command_list *l
|
|||||||
const struct d3d12_root_descriptor_table_range *range;
|
const struct d3d12_root_descriptor_table_range *range;
|
||||||
const struct vkd3d_vk_device_procs *vk_procs;
|
const struct vkd3d_vk_device_procs *vk_procs;
|
||||||
struct d3d12_device *device = list->device;
|
struct d3d12_device *device = list->device;
|
||||||
struct d3d12_cbv_srv_uav_desc *descriptor;
|
|
||||||
unsigned int i, j, descriptor_count;
|
unsigned int i, j, descriptor_count;
|
||||||
|
struct d3d12_desc *descriptor;
|
||||||
|
|
||||||
assert(root_signature->parameters[index].parameter_type == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE);
|
assert(root_signature->parameters[index].parameter_type == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE);
|
||||||
descriptor_table = &root_signature->parameters[index].u.descriptor_table;
|
descriptor_table = &root_signature->parameters[index].u.descriptor_table;
|
||||||
@ -2345,7 +2353,7 @@ static void d3d12_command_list_set_descriptor_table(struct d3d12_command_list *l
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
descriptor = (struct d3d12_cbv_srv_uav_desc *)(intptr_t)base_descriptor.ptr;
|
descriptor = (struct d3d12_desc *)(intptr_t)base_descriptor.ptr;
|
||||||
|
|
||||||
descriptor_count = 0;
|
descriptor_count = 0;
|
||||||
current_descriptor_write = descriptor_writes;
|
current_descriptor_write = descriptor_writes;
|
||||||
@ -2355,7 +2363,7 @@ static void d3d12_command_list_set_descriptor_table(struct d3d12_command_list *l
|
|||||||
range = &descriptor_table->ranges[i];
|
range = &descriptor_table->ranges[i];
|
||||||
for (j = 0; j < range->descriptor_count; ++j, ++descriptor)
|
for (j = 0; j < range->descriptor_count; ++j, ++descriptor)
|
||||||
{
|
{
|
||||||
if (!vk_write_descriptor_set_from_d3d12_cbv_srv_uav_desc(current_descriptor_write,
|
if (!vk_write_descriptor_set_from_d3d12_desc(current_descriptor_write,
|
||||||
current_image_info, descriptor, descriptor_set, range->binding + j))
|
current_image_info, descriptor, descriptor_set, range->binding + j))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -834,10 +834,8 @@ static UINT STDMETHODCALLTYPE d3d12_device_GetDescriptorHandleIncrementSize(ID3D
|
|||||||
switch (descriptor_heap_type)
|
switch (descriptor_heap_type)
|
||||||
{
|
{
|
||||||
case D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV:
|
case D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV:
|
||||||
return sizeof(struct d3d12_cbv_srv_uav_desc);
|
|
||||||
|
|
||||||
case D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER:
|
case D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER:
|
||||||
return sizeof(struct d3d12_sampler_desc);
|
return sizeof(struct d3d12_desc);
|
||||||
|
|
||||||
case D3D12_DESCRIPTOR_HEAP_TYPE_RTV:
|
case D3D12_DESCRIPTOR_HEAP_TYPE_RTV:
|
||||||
return sizeof(struct d3d12_rtv_desc);
|
return sizeof(struct d3d12_rtv_desc);
|
||||||
@ -884,7 +882,7 @@ static void STDMETHODCALLTYPE d3d12_device_CreateConstantBufferView(ID3D12Device
|
|||||||
{
|
{
|
||||||
TRACE("iface %p, desc %p, descriptor %#lx.\n", iface, desc, descriptor.ptr);
|
TRACE("iface %p, desc %p, descriptor %#lx.\n", iface, desc, descriptor.ptr);
|
||||||
|
|
||||||
d3d12_cbv_srv_uav_desc_create_cbv((struct d3d12_cbv_srv_uav_desc *)descriptor.ptr,
|
d3d12_desc_create_cbv((struct d3d12_desc *)descriptor.ptr,
|
||||||
impl_from_ID3D12Device(iface), desc);
|
impl_from_ID3D12Device(iface), desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -895,7 +893,7 @@ static void STDMETHODCALLTYPE d3d12_device_CreateShaderResourceView(ID3D12Device
|
|||||||
TRACE("iface %p, resource %p, desc %p, descriptor %#lx.\n",
|
TRACE("iface %p, resource %p, desc %p, descriptor %#lx.\n",
|
||||||
iface, resource, desc, descriptor.ptr);
|
iface, resource, desc, descriptor.ptr);
|
||||||
|
|
||||||
d3d12_cbv_srv_uav_desc_create_srv((struct d3d12_cbv_srv_uav_desc *)descriptor.ptr,
|
d3d12_desc_create_srv((struct d3d12_desc *)descriptor.ptr,
|
||||||
impl_from_ID3D12Device(iface), unsafe_impl_from_ID3D12Resource(resource), desc);
|
impl_from_ID3D12Device(iface), unsafe_impl_from_ID3D12Resource(resource), desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -909,7 +907,7 @@ static void STDMETHODCALLTYPE d3d12_device_CreateUnorderedAccessView(ID3D12Devic
|
|||||||
if (counter_resource)
|
if (counter_resource)
|
||||||
FIXME("Counter resources not implemented yet.\n");
|
FIXME("Counter resources not implemented yet.\n");
|
||||||
|
|
||||||
d3d12_cbv_srv_uav_desc_create_uav((struct d3d12_cbv_srv_uav_desc *)descriptor.ptr,
|
d3d12_desc_create_uav((struct d3d12_desc *)descriptor.ptr,
|
||||||
impl_from_ID3D12Device(iface), unsafe_impl_from_ID3D12Resource(resource), desc);
|
impl_from_ID3D12Device(iface), unsafe_impl_from_ID3D12Resource(resource), desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -940,7 +938,7 @@ static void STDMETHODCALLTYPE d3d12_device_CreateSampler(ID3D12Device *iface,
|
|||||||
{
|
{
|
||||||
TRACE("iface %p, desc %p, descriptor %#lx.\n", iface, desc, descriptor.ptr);
|
TRACE("iface %p, desc %p, descriptor %#lx.\n", iface, desc, descriptor.ptr);
|
||||||
|
|
||||||
d3d12_sampler_desc_create_sampler((struct d3d12_sampler_desc *)descriptor.ptr,
|
d3d12_desc_create_sampler((struct d3d12_desc *)descriptor.ptr,
|
||||||
impl_from_ID3D12Device(iface), desc);
|
impl_from_ID3D12Device(iface), desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -758,22 +758,20 @@ HRESULT vkd3d_create_image_resource(ID3D12Device *device, const D3D12_RESOURCE_D
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* CBVs, SRVs, UAVs */
|
/* CBVs, SRVs, UAVs */
|
||||||
static void d3d12_cbv_srv_uav_desc_destroy(struct d3d12_cbv_srv_uav_desc *descriptor,
|
static void d3d12_desc_destroy(struct d3d12_desc *descriptor,
|
||||||
struct d3d12_device *device)
|
struct d3d12_device *device)
|
||||||
{
|
{
|
||||||
const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
|
const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
|
||||||
|
|
||||||
/* Nothing to do for VKD3D_DESCRIPTOR_MAGIC_CBV. */
|
/* Nothing to do for VKD3D_DESCRIPTOR_MAGIC_CBV. */
|
||||||
if (descriptor->magic == VKD3D_DESCRIPTOR_MAGIC_SRV)
|
if (descriptor->magic == VKD3D_DESCRIPTOR_MAGIC_SRV)
|
||||||
{
|
|
||||||
VK_CALL(vkDestroyImageView(device->vk_device, descriptor->u.vk_image_view, NULL));
|
VK_CALL(vkDestroyImageView(device->vk_device, descriptor->u.vk_image_view, NULL));
|
||||||
memset(descriptor, 0, sizeof(*descriptor));
|
|
||||||
}
|
|
||||||
else if (descriptor->magic == VKD3D_DESCRIPTOR_MAGIC_UAV)
|
else if (descriptor->magic == VKD3D_DESCRIPTOR_MAGIC_UAV)
|
||||||
{
|
|
||||||
VK_CALL(vkDestroyBufferView(device->vk_device, descriptor->u.vk_buffer_view, NULL));
|
VK_CALL(vkDestroyBufferView(device->vk_device, descriptor->u.vk_buffer_view, NULL));
|
||||||
memset(descriptor, 0, sizeof(*descriptor));
|
else if (descriptor->magic == VKD3D_DESCRIPTOR_MAGIC_SAMPLER)
|
||||||
}
|
VK_CALL(vkDestroySampler(device->vk_device, descriptor->u.vk_sampler, NULL));
|
||||||
|
|
||||||
|
memset(descriptor, 0, sizeof(*descriptor));
|
||||||
}
|
}
|
||||||
|
|
||||||
static VkResult vkd3d_create_buffer_view(struct d3d12_device *device,
|
static VkResult vkd3d_create_buffer_view(struct d3d12_device *device,
|
||||||
@ -829,13 +827,13 @@ static VkResult vkd3d_create_texture_view(struct d3d12_device *device,
|
|||||||
return vr;
|
return vr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void d3d12_cbv_srv_uav_desc_create_cbv(struct d3d12_cbv_srv_uav_desc *descriptor,
|
void d3d12_desc_create_cbv(struct d3d12_desc *descriptor,
|
||||||
struct d3d12_device *device, const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc)
|
struct d3d12_device *device, const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc)
|
||||||
{
|
{
|
||||||
struct VkDescriptorBufferInfo *buffer_info;
|
struct VkDescriptorBufferInfo *buffer_info;
|
||||||
struct d3d12_resource *resource;
|
struct d3d12_resource *resource;
|
||||||
|
|
||||||
d3d12_cbv_srv_uav_desc_destroy(descriptor, device);
|
d3d12_desc_destroy(descriptor, device);
|
||||||
|
|
||||||
if (!desc)
|
if (!desc)
|
||||||
{
|
{
|
||||||
@ -859,13 +857,13 @@ void d3d12_cbv_srv_uav_desc_create_cbv(struct d3d12_cbv_srv_uav_desc *descriptor
|
|||||||
descriptor->vk_descriptor_type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
|
descriptor->vk_descriptor_type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
|
||||||
}
|
}
|
||||||
|
|
||||||
void d3d12_cbv_srv_uav_desc_create_srv(struct d3d12_cbv_srv_uav_desc *descriptor,
|
void d3d12_desc_create_srv(struct d3d12_desc *descriptor,
|
||||||
struct d3d12_device *device, struct d3d12_resource *resource,
|
struct d3d12_device *device, struct d3d12_resource *resource,
|
||||||
const D3D12_SHADER_RESOURCE_VIEW_DESC *desc)
|
const D3D12_SHADER_RESOURCE_VIEW_DESC *desc)
|
||||||
{
|
{
|
||||||
const struct vkd3d_format *format;
|
const struct vkd3d_format *format;
|
||||||
|
|
||||||
d3d12_cbv_srv_uav_desc_destroy(descriptor, device);
|
d3d12_desc_destroy(descriptor, device);
|
||||||
|
|
||||||
if (!resource)
|
if (!resource)
|
||||||
{
|
{
|
||||||
@ -896,13 +894,13 @@ void d3d12_cbv_srv_uav_desc_create_srv(struct d3d12_cbv_srv_uav_desc *descriptor
|
|||||||
descriptor->vk_descriptor_type = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
|
descriptor->vk_descriptor_type = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void d3d12_cbv_srv_uav_desc_create_uav(struct d3d12_cbv_srv_uav_desc *descriptor,
|
void d3d12_desc_create_uav(struct d3d12_desc *descriptor,
|
||||||
struct d3d12_device *device, struct d3d12_resource *resource,
|
struct d3d12_device *device, struct d3d12_resource *resource,
|
||||||
const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc)
|
const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc)
|
||||||
{
|
{
|
||||||
const struct vkd3d_format *format;
|
const struct vkd3d_format *format;
|
||||||
|
|
||||||
d3d12_cbv_srv_uav_desc_destroy(descriptor, device);
|
d3d12_desc_destroy(descriptor, device);
|
||||||
|
|
||||||
if (!resource)
|
if (!resource)
|
||||||
{
|
{
|
||||||
@ -957,17 +955,6 @@ void d3d12_cbv_srv_uav_desc_create_uav(struct d3d12_cbv_srv_uav_desc *descriptor
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* samplers */
|
/* samplers */
|
||||||
static void d3d12_sampler_desc_destroy(struct d3d12_sampler_desc *sampler, struct d3d12_device *device)
|
|
||||||
{
|
|
||||||
const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
|
|
||||||
|
|
||||||
if (sampler->magic != VKD3D_DESCRIPTOR_MAGIC_SAMPLER)
|
|
||||||
return;
|
|
||||||
|
|
||||||
VK_CALL(vkDestroySampler(device->vk_device, sampler->vk_sampler, NULL));
|
|
||||||
memset(sampler, 0, sizeof(*sampler));
|
|
||||||
}
|
|
||||||
|
|
||||||
static VkFilter vk_filter_from_d3d12(D3D12_FILTER_TYPE type)
|
static VkFilter vk_filter_from_d3d12(D3D12_FILTER_TYPE type)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
@ -1055,10 +1042,10 @@ static VkResult d3d12_create_sampler(struct d3d12_device *device, D3D12_FILTER f
|
|||||||
return vr;
|
return vr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void d3d12_sampler_desc_create_sampler(struct d3d12_sampler_desc *sampler,
|
void d3d12_desc_create_sampler(struct d3d12_desc *sampler,
|
||||||
struct d3d12_device *device, const D3D12_SAMPLER_DESC *desc)
|
struct d3d12_device *device, const D3D12_SAMPLER_DESC *desc)
|
||||||
{
|
{
|
||||||
d3d12_sampler_desc_destroy(sampler, device);
|
d3d12_desc_destroy(sampler, device);
|
||||||
|
|
||||||
if (!desc)
|
if (!desc)
|
||||||
{
|
{
|
||||||
@ -1074,10 +1061,11 @@ void d3d12_sampler_desc_create_sampler(struct d3d12_sampler_desc *sampler,
|
|||||||
|
|
||||||
if (d3d12_create_sampler(device, desc->Filter, desc->AddressU,
|
if (d3d12_create_sampler(device, desc->Filter, desc->AddressU,
|
||||||
desc->AddressV, desc->AddressW, desc->MipLODBias, desc->MaxAnisotropy,
|
desc->AddressV, desc->AddressW, desc->MipLODBias, desc->MaxAnisotropy,
|
||||||
desc->ComparisonFunc, desc->MinLOD, desc->MaxLOD, &sampler->vk_sampler) < 0)
|
desc->ComparisonFunc, desc->MinLOD, desc->MaxLOD, &sampler->u.vk_sampler) < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sampler->magic = VKD3D_DESCRIPTOR_MAGIC_SAMPLER;
|
sampler->magic = VKD3D_DESCRIPTOR_MAGIC_SAMPLER;
|
||||||
|
sampler->vk_descriptor_type = VK_DESCRIPTOR_TYPE_SAMPLER;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT d3d12_device_create_static_sampler(struct d3d12_device *device,
|
HRESULT d3d12_device_create_static_sampler(struct d3d12_device *device,
|
||||||
@ -1261,23 +1249,13 @@ static ULONG STDMETHODCALLTYPE d3d12_descriptor_heap_Release(ID3D12DescriptorHea
|
|||||||
switch (heap->desc.Type)
|
switch (heap->desc.Type)
|
||||||
{
|
{
|
||||||
case D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV:
|
case D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV:
|
||||||
{
|
|
||||||
struct d3d12_cbv_srv_uav_desc *descriptors = (struct d3d12_cbv_srv_uav_desc *)heap->descriptors;
|
|
||||||
|
|
||||||
for (i = 0; i < heap->desc.NumDescriptors; ++i)
|
|
||||||
{
|
|
||||||
d3d12_cbv_srv_uav_desc_destroy(&descriptors[i], device);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER:
|
case D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER:
|
||||||
{
|
{
|
||||||
struct d3d12_sampler_desc *samplers = (struct d3d12_sampler_desc *)heap->descriptors;
|
struct d3d12_desc *descriptors = (struct d3d12_desc *)heap->descriptors;
|
||||||
|
|
||||||
for (i = 0; i < heap->desc.NumDescriptors; ++i)
|
for (i = 0; i < heap->desc.NumDescriptors; ++i)
|
||||||
{
|
{
|
||||||
d3d12_sampler_desc_destroy(&samplers[i], device);
|
d3d12_desc_destroy(&descriptors[i], device);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -179,7 +179,7 @@ HRESULT d3d12_committed_resource_create(struct d3d12_device *device,
|
|||||||
const D3D12_CLEAR_VALUE *optimized_clear_value, struct d3d12_resource **resource) DECLSPEC_HIDDEN;
|
const D3D12_CLEAR_VALUE *optimized_clear_value, struct d3d12_resource **resource) DECLSPEC_HIDDEN;
|
||||||
struct d3d12_resource *unsafe_impl_from_ID3D12Resource(ID3D12Resource *iface) DECLSPEC_HIDDEN;
|
struct d3d12_resource *unsafe_impl_from_ID3D12Resource(ID3D12Resource *iface) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
struct d3d12_cbv_srv_uav_desc
|
struct d3d12_desc
|
||||||
{
|
{
|
||||||
uint32_t magic;
|
uint32_t magic;
|
||||||
VkDescriptorType vk_descriptor_type;
|
VkDescriptorType vk_descriptor_type;
|
||||||
@ -188,26 +188,21 @@ struct d3d12_cbv_srv_uav_desc
|
|||||||
VkDescriptorBufferInfo vk_cbv_info;
|
VkDescriptorBufferInfo vk_cbv_info;
|
||||||
VkBufferView vk_buffer_view;
|
VkBufferView vk_buffer_view;
|
||||||
VkImageView vk_image_view;
|
VkImageView vk_image_view;
|
||||||
|
VkSampler vk_sampler;
|
||||||
} u;
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
void d3d12_cbv_srv_uav_desc_create_cbv(struct d3d12_cbv_srv_uav_desc *descriptor,
|
void d3d12_desc_create_cbv(struct d3d12_desc *descriptor,
|
||||||
struct d3d12_device *device, const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc) DECLSPEC_HIDDEN;
|
struct d3d12_device *device, const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc) DECLSPEC_HIDDEN;
|
||||||
void d3d12_cbv_srv_uav_desc_create_srv(struct d3d12_cbv_srv_uav_desc *descriptor,
|
void d3d12_desc_create_srv(struct d3d12_desc *descriptor,
|
||||||
struct d3d12_device *device, struct d3d12_resource *resource,
|
struct d3d12_device *device, struct d3d12_resource *resource,
|
||||||
const D3D12_SHADER_RESOURCE_VIEW_DESC *desc) DECLSPEC_HIDDEN;
|
const D3D12_SHADER_RESOURCE_VIEW_DESC *desc) DECLSPEC_HIDDEN;
|
||||||
void d3d12_cbv_srv_uav_desc_create_uav(struct d3d12_cbv_srv_uav_desc *descriptor,
|
void d3d12_desc_create_uav(struct d3d12_desc *descriptor,
|
||||||
struct d3d12_device *device, struct d3d12_resource *resource,
|
struct d3d12_device *device, struct d3d12_resource *resource,
|
||||||
const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc) DECLSPEC_HIDDEN;
|
const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc) DECLSPEC_HIDDEN;
|
||||||
|
void d3d12_desc_create_sampler(struct d3d12_desc *sampler,
|
||||||
struct d3d12_sampler_desc
|
|
||||||
{
|
|
||||||
uint32_t magic;
|
|
||||||
VkSampler vk_sampler;
|
|
||||||
};
|
|
||||||
|
|
||||||
void d3d12_sampler_desc_create_sampler(struct d3d12_sampler_desc *sampler,
|
|
||||||
struct d3d12_device *device, const D3D12_SAMPLER_DESC *desc) DECLSPEC_HIDDEN;
|
struct d3d12_device *device, const D3D12_SAMPLER_DESC *desc) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
HRESULT d3d12_device_create_static_sampler(struct d3d12_device *device,
|
HRESULT d3d12_device_create_static_sampler(struct d3d12_device *device,
|
||||||
const D3D12_STATIC_SAMPLER_DESC *desc, VkSampler *vk_sampler) DECLSPEC_HIDDEN;
|
const D3D12_STATIC_SAMPLER_DESC *desc, VkSampler *vk_sampler) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user