st/nine: Add format checks to create_zs_or_rt_surface

Returns INVALIDCALL when trying to create a surface
of unsupported format.

In practice, apps are supposed to check for format
support before trying to create a render target
of that format. However some bad behaving apps
could just try to create the surface and deduce if
it failed that it wasn't supported.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
This commit is contained in:
Axel Davy 2016-01-26 18:21:26 +01:00
parent 3a2e0c7784
commit dbcb4f46ad
1 changed files with 3 additions and 0 deletions

View File

@ -1126,6 +1126,9 @@ create_zs_or_rt_surface(struct NineDevice9 *This,
templ.nr_samples, templ.bind,
FALSE);
if (templ.format == PIPE_FORMAT_NONE && Format != D3DFMT_NULL)
return D3DERR_INVALIDCALL;
desc.Format = Format;
desc.Type = D3DRTYPE_SURFACE;
desc.Usage = 0;