diff options
author | Lyude <[email protected]> | 2017-06-02 20:45:36 -0400 |
---|---|---|
committer | Ilia Mirkin <[email protected]> | 2017-06-02 23:10:36 -0400 |
commit | 245912b684b862d47cde10052b137d76a55d0bd3 (patch) | |
tree | 9a97e7073f86bfaf27a4c1048231935fd77bb7e8 /src/gallium/drivers/nouveau | |
parent | 0d576fbfbe912cf3fb9ab594bb31eb58bccf2138 (diff) |
nvc0: disable BGRA8 images on Fermi
BGRA8 image stores on Fermi don't work, which results in breaking
PBO downloads, such that they always return 0x0. Discovered this
through a glamor bug, and confirmed it does indeed break a good number
of piglit tests such as spec/arb_pixel_buffer_object/pbo-read-argb8888
Fixes: 8e7893eb53213 ("nvc0: add support for BGRA8 images")
Signed-off-by: Lyude <[email protected]>
Reviewed-by: Ilia Mirkin <[email protected]>
Cc: [email protected]
Diffstat (limited to 'src/gallium/drivers/nouveau')
-rw-r--r-- | src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c index c636926994b..f6c5c727979 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c @@ -87,11 +87,20 @@ nvc0_screen_is_format_supported(struct pipe_screen *pscreen, bindings &= ~(PIPE_BIND_LINEAR | PIPE_BIND_SHARED); - if (bindings & PIPE_BIND_SHADER_IMAGE && sample_count > 1 && - nouveau_screen(pscreen)->class_3d >= GM107_3D_CLASS) { - /* MS images are currently unsupported on Maxwell because they have to - * be handled explicitly. */ - return false; + if (bindings & PIPE_BIND_SHADER_IMAGE) { + if (sample_count > 1 && + nouveau_screen(pscreen)->class_3d >= GM107_3D_CLASS) { + /* MS images are currently unsupported on Maxwell because they have to + * be handled explicitly. */ + return false; + } + + if (format == PIPE_FORMAT_B8G8R8A8_UNORM && + nouveau_screen(pscreen)->class_3d < NVE4_3D_CLASS) { + /* This should work on Fermi, but for currently unknown reasons it + * does not and results in breaking reads from pbos. */ + return false; + } } return (( nvc0_format_table[format].usage | |