[PATCH resend 13/18] wined3d: Use depth/stencil formats for typeless resources only when WINED3DUSAGE_DEPTHSTENCIL is set.
Henri Verbeet
hverbeet at gmail.com
Mon Dec 12 02:25:16 CST 2016
On 9 December 2016 at 11:30, Józef Kucia <jkucia at codeweavers.com> wrote:
> const struct wined3d_format *wined3d_get_format(const struct wined3d_gl_info *gl_info,
> - enum wined3d_format_id format_id)
> + enum wined3d_format_id format_id, unsigned int resource_usage)
> {
> + const struct wined3d_format *format;
> int idx = get_format_idx(format_id);
> + unsigned int i;
>
> if (idx == -1)
> {
> - FIXME("Can't find format %s (%#x) in the format lookup table\n",
> + FIXME("Can't find format %s (%#x) in the format lookup table.\n",
> + debug_d3dformat(format_id), format_id);
> + return &gl_info->formats[get_format_idx(WINED3DFMT_UNKNOWN)];
> + }
> +
> + format = &gl_info->formats[idx];
> +
> + if (resource_usage & WINED3DUSAGE_DEPTHSTENCIL && wined3d_format_is_typeless(format))
> + {
> + for (i = 0; i < ARRAY_SIZE(typeless_depth_stencil_formats); ++i)
> + {
> + if (typeless_depth_stencil_formats[i].typeless_id == format_id)
> + return &gl_info->formats[WINED3D_FORMAT_COUNT + i];
> + }
> +
> + FIXME("Cannot find depth/stencil typeless format %s (%#x).\n",
> debug_d3dformat(format_id), format_id);
> - /* Get the caller a valid pointer */
> - idx = get_format_idx(WINED3DFMT_UNKNOWN);
> + return &gl_info->formats[get_format_idx(WINED3DFMT_UNKNOWN)];
> }
>
> - return &gl_info->formats[idx];
> + return format;
> }
>
I do have some concerns about whether returning different
wined3d_format structures for different usages/bind flags is better
than having different GL internal formats for different usages/bind
flags within the same wined3d_format structure, but lets give it a
try.
More information about the wine-devel
mailing list