[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