[PATCH 2/5] wined3d: Automatically assign reported driver D3D version / feature level.
Henri Verbeet
hverbeet at gmail.com
Mon Jul 13 08:08:51 CDT 2020
On Mon, 13 Jul 2020 at 16:31, Matteo Bruni <mbruni at codeweavers.com> wrote:
> @@ -3829,17 +3832,14 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
> gl_vendor = wined3d_guess_gl_vendor(gl_info, gl_vendor_str, gl_renderer_str, gl_version_str);
> TRACE("Guessed GL vendor %#x.\n", gl_vendor);
>
> + adapter->shader_backend->shader_get_caps(adapter, &shader_caps);
> + adapter->fragment_pipe->get_caps(adapter, &fragment_caps);
> + feature_level = feature_level_from_caps(gl_info, &shader_caps, &fragment_caps);
> +
> if (!(gpu_description = query_gpu_description(gl_info, &vram_bytes)))
> {
> - enum wined3d_feature_level feature_level;
> - struct fragment_caps fragment_caps;
> enum wined3d_pci_vendor vendor;
> enum wined3d_pci_device device;
> - struct shader_caps shader_caps;
> -
> - adapter->shader_backend->shader_get_caps(adapter, &shader_caps);
> - adapter->fragment_pipe->get_caps(adapter, &fragment_caps);
> - feature_level = feature_level_from_caps(gl_info, &shader_caps, &fragment_caps);
>
> vendor = wined3d_guess_card_vendor(gl_vendor_str, gl_renderer_str);
> TRACE("Guessed vendor PCI ID 0x%04x.\n", vendor);
> @@ -3855,7 +3855,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
> }
> fixup_extensions(gl_info, caps_gl_ctx, gl_renderer_str, gl_vendor,
> gpu_description->vendor, gpu_description->device);
> - wined3d_driver_info_init(driver_info, gpu_description, vram_bytes, 0);
> + wined3d_driver_info_init(driver_info, gpu_description, feature_level, vram_bytes, 0);
> TRACE("Reporting (fake) driver version 0x%08x-0x%08x.\n",
> driver_info->version_high, driver_info->version_low);
>
Perhaps wined3d_adapter_init_gl_caps() ultimately isn't the right
place for wined3d_driver_info_init(). I.e., I think an argument could
be made for storing "gpu_description" and "vram_bytes" in
"caps_gl_ctx", and calling wined3d_driver_info_init() only after
wined3d_adapter_gl_init_d3d_info().
> @@ -2082,7 +2082,8 @@ static void adapter_vk_init_driver_info(struct wined3d_adapter_vk *adapter_vk,
> gpu_description = &description;
> }
>
> - wined3d_driver_info_init(&adapter_vk->a.driver_info, gpu_description, vram_bytes, sysmem_bytes);
> + wined3d_driver_info_init(&adapter_vk->a.driver_info, gpu_description, WINED3D_FEATURE_LEVEL_11_1,
> + vram_bytes, sysmem_bytes);
> }
>
Something similar applies here, but passing WINED3D_FEATURE_LEVEL_11_1
is simply wrong; at a minimum this should use the Vulkan version of
feature_level_from_caps().
More information about the wine-devel
mailing list