On Wed, 7 Jan 2015, Ilia Mirkin wrote:
On Wed, Jan 7, 2015 at 11:36 AM, Axel Davy <axel.d...@ens.fr> wrote:
Reviewed-by: David Heidelberg <da...@ixit.cz>
Signed-off-by: Axel Davy <axel.d...@ens.fr>
---
src/gallium/state_trackers/nine/cubetexture9.c | 8 ++++++++
src/gallium/state_trackers/nine/texture9.c | 9 ++++++++-
src/gallium/state_trackers/nine/volumetexture9.c | 10 +++++++++-
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/src/gallium/state_trackers/nine/cubetexture9.c
b/src/gallium/state_trackers/nine/cubetexture9.c
index 2c607c0..43db8cb 100644
--- a/src/gallium/state_trackers/nine/cubetexture9.c
+++ b/src/gallium/state_trackers/nine/cubetexture9.c
@@ -38,6 +38,8 @@ NineCubeTexture9_ctor( struct NineCubeTexture9 *This,
HANDLE *pSharedHandle )
{
struct pipe_resource *info = &This->base.base.info;
+ struct pipe_screen *screen = pParams->device->screen;
+ enum pipe_format pf;
unsigned i;
D3DSURFACE_DESC sfdesc;
HRESULT hr;
@@ -55,6 +57,12 @@ NineCubeTexture9_ctor( struct NineCubeTexture9 *This,
if (Usage & D3DUSAGE_AUTOGENMIPMAP)
Levels = 0;
+ pf = d3d9_to_pipe_format(Format);
+ if (pf == PIPE_FORMAT_NONE ||
+ !screen->is_format_supported(screen, pf, PIPE_TEXTURE_CUBE, 0,
PIPE_BIND_SAMPLER_VIEW)) {
+ return D3DERR_INVALIDCALL;
+ }
+
info->screen = pParams->device->screen;
info->target = PIPE_TEXTURE_CUBE;
info->format = d3d9_to_pipe_format(Format);
info->format = pf; here as well for parity with the other code?
Oups, yes
diff --git a/src/gallium/state_trackers/nine/texture9.c
b/src/gallium/state_trackers/nine/texture9.c
index 8852142..4d7e950 100644
--- a/src/gallium/state_trackers/nine/texture9.c
+++ b/src/gallium/state_trackers/nine/texture9.c
@@ -47,6 +47,7 @@ NineTexture9_ctor( struct NineTexture9 *This,
struct pipe_screen *screen = pParams->device->screen;
struct pipe_resource *info = &This->base.base.info;
struct pipe_resource *resource;
+ enum pipe_format pf;
unsigned l;
D3DSURFACE_DESC sfdesc;
HRESULT hr;
@@ -92,9 +93,15 @@ NineTexture9_ctor( struct NineTexture9 *This,
if (Usage & D3DUSAGE_AUTOGENMIPMAP)
Levels = 0;
+ pf = d3d9_to_pipe_format(Format);
+ if (Format != D3DFMT_NULL && (pf == PIPE_FORMAT_NONE ||
None of the others have this check... is null valid here but not for
cube/volume?
This format is a hack supported by all three vendors that allows
rendering to nothing without memory usage. We choosed to support
it only for textures, probably the only location where it makes sense.
In NineAdapter9_CheckDeviceFormat you can see we only advertise
support for this format for textures.
-ilia
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev