vkd3d: Make global quirks info struct a value.

Allows us to fiddle with it after the fact.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
Hans-Kristian Arntzen 2021-10-12 15:28:54 +02:00
parent 26bd08bbde
commit be8d6ec7ad
4 changed files with 6 additions and 6 deletions

View File

@ -411,7 +411,7 @@ static void vkd3d_init_debug_messenger_callback(struct vkd3d_instance *instance)
}
uint64_t vkd3d_config_flags;
const struct vkd3d_shader_quirk_info *vkd3d_shader_quirk_info;
struct vkd3d_shader_quirk_info vkd3d_shader_quirk_info;
struct vkd3d_instance_application_meta
{
@ -479,7 +479,7 @@ static void vkd3d_instance_apply_application_workarounds(void)
{
if (vkd3d_string_compare(application_shader_quirks[i].mode, app, application_shader_quirks[i].name))
{
vkd3d_shader_quirk_info = application_shader_quirks[i].info;
vkd3d_shader_quirk_info = *application_shader_quirks[i].info;
INFO("Detected game %s, adding shader quirks for specific shaders.\n", app);
break;
}

View File

@ -987,7 +987,7 @@ static HRESULT d3d12_state_object_compile_pipeline(struct d3d12_state_object *ob
compile_args.target_extensions = object->device->vk_info.shader_extensions;
compile_args.target_extension_count = object->device->vk_info.shader_extension_count;
compile_args.target = VKD3D_SHADER_TARGET_SPIRV_VULKAN_1_0;
compile_args.quirks = vkd3d_shader_quirk_info;
compile_args.quirks = &vkd3d_shader_quirk_info;
/* TODO: Allow different root signatures per module. */
memset(&shader_interface_info, 0, sizeof(shader_interface_info));

View File

@ -2197,7 +2197,7 @@ static HRESULT vkd3d_create_compute_pipeline(struct d3d12_device *device,
compile_args.target_extensions = device->vk_info.shader_extensions;
compile_args.target_extension_count = device->vk_info.shader_extension_count;
compile_args.target = VKD3D_SHADER_TARGET_SPIRV_VULKAN_1_0;
compile_args.quirks = vkd3d_shader_quirk_info;
compile_args.quirks = &vkd3d_shader_quirk_info;
pipeline_info.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
pipeline_info.pNext = NULL;
@ -3214,7 +3214,7 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
compile_args.target = VKD3D_SHADER_TARGET_SPIRV_VULKAN_1_0;
compile_args.target_extension_count = vk_info->shader_extension_count;
compile_args.target_extensions = vk_info->shader_extensions;
compile_args.quirks = vkd3d_shader_quirk_info;
compile_args.quirks = &vkd3d_shader_quirk_info;
/* Options which are exclusive to PS. Especially output swizzles must only be used in PS. */
ps_compile_args = compile_args;

View File

@ -191,7 +191,7 @@ struct vkd3d_instance
};
extern uint64_t vkd3d_config_flags;
extern const struct vkd3d_shader_quirk_info *vkd3d_shader_quirk_info;
extern struct vkd3d_shader_quirk_info vkd3d_shader_quirk_info;
union vkd3d_thread_handle
{