summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2016-06-22 20:42:37 -0600
committerBrian Paul <[email protected]>2016-06-30 14:32:06 -0600
commiteb0ced74f6decd1bf1e111b162e1389bede89af6 (patch)
tree442f6ab1cea09ce103c2178acdb99ab5246d52c5 /src/gallium
parent5f1335878e26784e2b006622fd315f89b66782f4 (diff)
svga: use untyped surface formats in most cases
This allows us to do copies between different, but compatible, surface formats such as RGBA8_UNORM, RGBA8_SINT, RGBA8_UINT, etc. for GL_ARB_copy_image. Acked-by: Roland Scheidegger <[email protected]> Reviewed-by: Charmaine Lee <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/svga/svga_resource_texture.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c
index 0e21f5ea512..3f91c86e64c 100644
--- a/src/gallium/drivers/svga/svga_resource_texture.c
+++ b/src/gallium/drivers/svga/svga_resource_texture.c
@@ -945,14 +945,17 @@ svga_texture_create(struct pipe_screen *screen,
goto fail;
}
- /* Use typeless formats for sRGB and depth resources. Typeless
+ /* The actual allocation is done with a typeless format. Typeless
* formats can be reinterpreted as other formats. For example,
* SVGA3D_R8G8B8A8_UNORM_TYPELESS can be interpreted as
* SVGA3D_R8G8B8A8_UNORM_SRGB or SVGA3D_R8G8B8A8_UNORM.
+ * Do not use typeless formats for SHARED, DISPLAY_TARGET or SCANOUT
+ * buffers.
*/
- if (svgascreen->sws->have_vgpu10 &&
- (util_format_is_srgb(template->format) ||
- format_has_depth(template->format))) {
+ if (svgascreen->sws->have_vgpu10
+ && ((bindings & (PIPE_BIND_SHARED |
+ PIPE_BIND_DISPLAY_TARGET |
+ PIPE_BIND_SCANOUT)) == 0)) {
SVGA3dSurfaceFormat typeless = svga_typeless_format(tex->key.format);
if (0) {
debug_printf("Convert resource type %s -> %s (bind 0x%x)\n",