Module: Mesa
Branch: master
Commit: f7392eb23a700ab7a131f4a0d23426996ac352a5
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f7392eb23a700ab7a131f4a0d23426996ac352a5

Author: Luca Barbieri <l...@luca-barbieri.com>
Date:   Sat Sep  4 17:48:19 2010 +0200

nvfx: prevent swizzled rendering into formats where it's not supported

---

 src/gallium/drivers/nvfx/nvfx_state_fb.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/nvfx/nvfx_state_fb.c 
b/src/gallium/drivers/nvfx/nvfx_state_fb.c
index b9d30c4..667b084 100644
--- a/src/gallium/drivers/nvfx/nvfx_state_fb.c
+++ b/src/gallium/drivers/nvfx/nvfx_state_fb.c
@@ -5,6 +5,7 @@
 static inline boolean
 nvfx_surface_linear_renderable(struct pipe_surface* surf)
 {
+       /* TODO: precompute this in nvfx_surface creation */
        return (surf->texture->flags & NVFX_RESOURCE_FLAG_LINEAR)
                && !(surf->offset & 63)
                && !(((struct nvfx_surface*)surf)->pitch & 63);
@@ -13,13 +14,14 @@ nvfx_surface_linear_renderable(struct pipe_surface* surf)
 static inline boolean
 nvfx_surface_swizzled_renderable(struct pipe_framebuffer_state* fb, struct 
pipe_surface* surf)
 {
-       /* TODO: return FALSE if we have a format not supporting swizzled 
rendering (e.g. r8); currently those are not supported at all */
+       /* TODO: precompute this in nvfx_surface creation */
        return !((struct nvfx_miptree*)surf->texture)->linear_pitch
                && (surf->texture->target != PIPE_TEXTURE_3D || 
u_minify(surf->texture->depth0, surf->level) <= 1)
                && !(surf->offset & 127)
                && (surf->width == fb->width)
                && (surf->height == fb->height)
-               && !((struct nvfx_surface*)surf)->temp;
+               && !((struct nvfx_surface*)surf)->temp
+               && (surf->format == PIPE_FORMAT_B8G8R8A8_UNORM || surf->format 
== PIPE_FORMAT_B8G8R8X8_UNORM || surf->format == PIPE_FORMAT_B5G6R5_UNORM);
 }
 
 static boolean

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to