[PATCH v2 1/2] dxgi: Implement dxgi_output_ReleaseOwnership.

Henri Verbeet hverbeet at gmail.com
Thu Oct 24 10:24:51 CDT 2019


On Thu, 24 Oct 2019 at 16:17, Zhiyi Zhang <zzhang at codeweavers.com> wrote:
> -static void dxgi_output_init(struct dxgi_output *output, struct dxgi_adapter *adapter)
> +static HRESULT dxgi_output_init(struct dxgi_output *output, struct dxgi_adapter *adapter)
>  {
> +    struct wined3d_output_desc wined3d_desc;
> +
>      output->IDXGIOutput4_iface.lpVtbl = &dxgi_output_vtbl;
>      output->refcount = 1;
>      wined3d_private_store_init(&output->private_store);
>      output->adapter = adapter;
>      IWineDXGIAdapter_AddRef(&output->adapter->IWineDXGIAdapter_iface);
> +
> +    wined3d_mutex_lock();
> +    wined3d_get_output_desc(output->adapter->factory->wined3d, output->adapter->ordinal, &wined3d_desc);
> +    wined3d_mutex_unlock();
> +
> +    return wined3d_output_create(wined3d_desc.device_name, &output->wined3d_output);
>  }
It doesn't seem right for the wined3d output to be created by the dxgi
output, it seems like it should be owned by the wined3d_adapter
instead. I.e., I think ideally we'd have something like
"wined3d_output = wined3d_adapter_get_output(wined3d_adapter,
output_idx);", but until adapters and outputs are split on the wined3d
level, that would probably have to be something like "wined3d_output =
wined3d_get_adapter_output(wined3d, adapter_idx);" instead.

If you're up for it (and since I know you've been doing work in this
area), perhaps it makes sense to convert things like
"wined3d_get_adapter_display_mode(wined3d, adapter_idx, ...)" to
"wined3d_adapter_get_display_mode(wined3d_adapter, ...)" as a first
step.



More information about the wine-devel mailing list