mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d: Do not synchronize with the tessellation shader stages if they're not enabled.
Similarly to a54187f3c9
, this fixes some validation
errors on devices that do not support tessellation; the Adreno 540 on my OnePlus 5
phone in my specific case.
This commit is contained in:
parent
3ff8130566
commit
7958babb39
Notes:
Henri Verbeet
2024-07-08 18:55:29 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/919
@ -2034,11 +2034,12 @@ static bool vk_barrier_parameters_from_d3d12_resource_state(unsigned int state,
|
|||||||
if (vk_queue_flags & VK_QUEUE_GRAPHICS_BIT)
|
if (vk_queue_flags & VK_QUEUE_GRAPHICS_BIT)
|
||||||
{
|
{
|
||||||
queue_shader_stages |= VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
|
queue_shader_stages |= VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
|
||||||
| VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
|
|
||||||
| VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
|
|
||||||
| VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
| VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
||||||
if (device->vk_info.geometry_shaders)
|
if (device->vk_info.geometry_shaders)
|
||||||
queue_shader_stages |= VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT;
|
queue_shader_stages |= VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT;
|
||||||
|
if (device->vk_info.tessellation_shaders)
|
||||||
|
queue_shader_stages |= VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
|
||||||
|
| VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT;
|
||||||
}
|
}
|
||||||
if (vk_queue_flags & VK_QUEUE_COMPUTE_BIT)
|
if (vk_queue_flags & VK_QUEUE_COMPUTE_BIT)
|
||||||
queue_shader_stages |= VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT;
|
queue_shader_stages |= VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT;
|
||||||
|
@ -1644,6 +1644,7 @@ static HRESULT vkd3d_init_device_caps(struct d3d12_device *device,
|
|||||||
vulkan_info->device_limits = physical_device_info->properties2.properties.limits;
|
vulkan_info->device_limits = physical_device_info->properties2.properties.limits;
|
||||||
vulkan_info->sparse_properties = physical_device_info->properties2.properties.sparseProperties;
|
vulkan_info->sparse_properties = physical_device_info->properties2.properties.sparseProperties;
|
||||||
vulkan_info->geometry_shaders = physical_device_info->features2.features.geometryShader;
|
vulkan_info->geometry_shaders = physical_device_info->features2.features.geometryShader;
|
||||||
|
vulkan_info->tessellation_shaders = physical_device_info->features2.features.tessellationShader;
|
||||||
vulkan_info->sparse_binding = features->sparseBinding;
|
vulkan_info->sparse_binding = features->sparseBinding;
|
||||||
vulkan_info->sparse_residency_3d = features->sparseResidencyImage3D;
|
vulkan_info->sparse_residency_3d = features->sparseResidencyImage3D;
|
||||||
vulkan_info->rasterization_stream = physical_device_info->xfb_properties.transformFeedbackRasterizationStreamSelect;
|
vulkan_info->rasterization_stream = physical_device_info->xfb_properties.transformFeedbackRasterizationStreamSelect;
|
||||||
|
@ -147,6 +147,7 @@ struct vkd3d_vulkan_info
|
|||||||
bool rasterization_stream;
|
bool rasterization_stream;
|
||||||
bool transform_feedback_queries;
|
bool transform_feedback_queries;
|
||||||
bool geometry_shaders;
|
bool geometry_shaders;
|
||||||
|
bool tessellation_shaders;
|
||||||
|
|
||||||
bool uav_read_without_format;
|
bool uav_read_without_format;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user