[PATCH 3/3] dxgi: Added support for DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE

Henri Verbeet hverbeet at gmail.com
Wed Feb 8 09:05:26 CST 2017


On 8 February 2017 at 09:26, Nikolay Sivov <nsivov at codeweavers.com> wrote:
> @@ -5275,7 +5275,7 @@ static HRESULT CDECL device_parent_sub_resource_created(struct wined3d_device_pa
>  }
>
>  static HRESULT CDECL device_parent_create_swapchain_texture(struct wined3d_device_parent *device_parent,
> -        void *container_parent, const struct wined3d_resource_desc *wined3d_desc,
> +        void *container_parent, const struct wined3d_resource_desc *wined3d_desc, DWORD texture_flags,
>          struct wined3d_texture **wined3d_texture)
>  {
>      struct d3d_device *device = device_from_wined3d_device_parent(device_parent);
> @@ -5299,7 +5299,7 @@ static HRESULT CDECL device_parent_create_swapchain_texture(struct wined3d_devic
>      desc.Usage = D3D10_USAGE_DEFAULT;
>      desc.BindFlags = D3D10_BIND_RENDER_TARGET;
>      desc.CPUAccessFlags = 0;
> -    desc.MiscFlags = 0;
> +    desc.MiscFlags = texture_flags & WINED3D_TEXTURE_CREATE_GET_DC ? D3D10_RESOURCE_MISC_GDI_COMPATIBLE: 0;

Please also print a FIXME for other flags.

> diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
> index 805694b853..bf6653a42b 100644
> --- a/dlls/d3d8/device.c
> +++ b/dlls/d3d8/device.c
> @@ -3036,7 +3036,8 @@ static HRESULT CDECL device_parent_volume_created(struct wined3d_device_parent *
>  }
>
>  static HRESULT CDECL device_parent_create_swapchain_texture(struct wined3d_device_parent *device_parent,
> -        void *container_parent, const struct wined3d_resource_desc *desc, struct wined3d_texture **texture)
> +        void *container_parent, const struct wined3d_resource_desc *desc, DWORD texture_flags,
> +        struct wined3d_texture **texture)
>  {
>      struct d3d8_device *device = device_from_device_parent(device_parent);
>      struct d3d8_surface *d3d_surface;
Likewise, I think we should do a little more here. Either passing the
texture flags along to wined3d_texture_create(), or just printing a
FIXME in case they're non-zero.

> diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
> index e646cb76c7..923ced55b4 100644
> --- a/dlls/d3d9/device.c
> +++ b/dlls/d3d9/device.c
> @@ -3746,7 +3746,8 @@ static HRESULT CDECL device_parent_volume_created(struct wined3d_device_parent *
>  }
>
>  static HRESULT CDECL device_parent_create_swapchain_texture(struct wined3d_device_parent *device_parent,
> -        void *container_parent, const struct wined3d_resource_desc *desc, struct wined3d_texture **texture)
> +        void *container_parent, const struct wined3d_resource_desc *desc, DWORD texture_flags,
> +        struct wined3d_texture **texture)
>  {
>      struct d3d9_device *device = device_from_device_parent(device_parent);
>      DWORD flags = WINED3D_TEXTURE_CREATE_MAPPABLE;
I could live with adding WINED3D_TEXTURE_CREATE_GET_DC in
device_parent_create_swapchain_texture() in d3d9, but ideally we'd set
the appropriate flag on swapchain creation.



More information about the wine-devel mailing list