mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d: Use Vulkan 1.1 if available.
This commit is contained in:
parent
6975a8d726
commit
270aa22d0b
Notes:
Alexandre Julliard
2024-04-17 23:29:42 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/776
@ -558,12 +558,14 @@ static HRESULT vkd3d_instance_init(struct vkd3d_instance *instance,
|
||||
const struct vkd3d_optional_instance_extensions_info *optional_extensions;
|
||||
const struct vkd3d_application_info *vkd3d_application_info;
|
||||
const struct vkd3d_host_time_domain_info *time_domain_info;
|
||||
PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion;
|
||||
bool *user_extension_supported = NULL;
|
||||
VkApplicationInfo application_info;
|
||||
VkInstanceCreateInfo instance_info;
|
||||
char application_name[PATH_MAX];
|
||||
uint32_t extension_count;
|
||||
const char **extensions;
|
||||
uint32_t vk_api_version;
|
||||
VkInstance vk_instance;
|
||||
VkResult vr;
|
||||
HRESULT hr;
|
||||
@ -616,6 +618,16 @@ static HRESULT vkd3d_instance_init(struct vkd3d_instance *instance,
|
||||
application_info.apiVersion = VK_API_VERSION_1_0;
|
||||
instance->api_version = VKD3D_API_VERSION_1_0;
|
||||
|
||||
/* vkEnumerateInstanceVersion was added in Vulkan 1.1, and its absence indicates only 1.0 is supported. */
|
||||
vkEnumerateInstanceVersion = (void *)vk_global_procs->vkGetInstanceProcAddr(NULL, "vkEnumerateInstanceVersion");
|
||||
if (vkEnumerateInstanceVersion && vkEnumerateInstanceVersion(&vk_api_version) >= 0
|
||||
&& vk_api_version >= VK_API_VERSION_1_1)
|
||||
{
|
||||
TRACE("Vulkan API version 1.1 is available; requesting it.\n");
|
||||
application_info.apiVersion = VK_API_VERSION_1_1;
|
||||
}
|
||||
instance->vk_api_version = application_info.apiVersion;
|
||||
|
||||
if ((vkd3d_application_info = vkd3d_find_struct(create_info->next, APPLICATION_INFO)))
|
||||
{
|
||||
if (vkd3d_application_info->application_name)
|
||||
@ -5117,6 +5129,8 @@ static HRESULT d3d12_device_init(struct d3d12_device *device,
|
||||
device->vk_info = instance->vk_info;
|
||||
device->signal_event = instance->signal_event;
|
||||
device->wchar_size = instance->wchar_size;
|
||||
device->environment = (instance->vk_api_version >= VK_API_VERSION_1_1)
|
||||
? VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_1 : VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0;
|
||||
|
||||
device->adapter_luid = create_info->adapter_luid;
|
||||
device->removed_reason = S_OK;
|
||||
|
@ -2452,7 +2452,7 @@ static HRESULT d3d12_pipeline_state_init_compute(struct d3d12_pipeline_state *st
|
||||
|
||||
memset(&target_info, 0, sizeof(target_info));
|
||||
target_info.type = VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO;
|
||||
target_info.environment = VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0;
|
||||
target_info.environment = device->environment;
|
||||
target_info.extensions = device->vk_info.shader_extensions;
|
||||
target_info.extension_count = device->vk_info.shader_extension_count;
|
||||
|
||||
@ -3177,7 +3177,7 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
|
||||
ps_target_info.type = VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO;
|
||||
ps_target_info.next = NULL;
|
||||
ps_target_info.entry_point = "main";
|
||||
ps_target_info.environment = VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0;
|
||||
ps_target_info.environment = device->environment;
|
||||
ps_target_info.extensions = vk_info->shader_extensions;
|
||||
ps_target_info.extension_count = vk_info->shader_extension_count;
|
||||
ps_target_info.parameters = ps_shader_parameters;
|
||||
@ -3207,7 +3207,7 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
|
||||
|
||||
memset(&target_info, 0, sizeof(target_info));
|
||||
target_info.type = VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO;
|
||||
target_info.environment = VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0;
|
||||
target_info.environment = device->environment;
|
||||
target_info.extensions = vk_info->shader_extensions;
|
||||
target_info.extension_count = vk_info->shader_extension_count;
|
||||
|
||||
|
@ -185,6 +185,7 @@ struct vkd3d_instance
|
||||
struct vkd3d_vulkan_info vk_info;
|
||||
struct vkd3d_vk_global_procs vk_global_procs;
|
||||
void *libvulkan;
|
||||
uint32_t vk_api_version;
|
||||
|
||||
uint64_t config_flags;
|
||||
enum vkd3d_api_version api_version;
|
||||
@ -1678,6 +1679,7 @@ struct d3d12_device
|
||||
struct vkd3d_vk_device_procs vk_procs;
|
||||
PFN_vkd3d_signal_event signal_event;
|
||||
size_t wchar_size;
|
||||
enum vkd3d_shader_spirv_environment environment;
|
||||
|
||||
struct vkd3d_gpu_va_allocator gpu_va_allocator;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user