From f7392eb23a700ab7a131f4a0d23426996ac352a5 Mon Sep 17 00:00:00 2001 From: Luca Barbieri Date: Sat, 4 Sep 2010 17:48:19 +0200 Subject: nvfx: prevent swizzled rendering into formats where it's not supported --- src/gallium/drivers/nvfx/nvfx_state_fb.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/gallium/drivers/nvfx/nvfx_state_fb.c') diff --git a/src/gallium/drivers/nvfx/nvfx_state_fb.c b/src/gallium/drivers/nvfx/nvfx_state_fb.c index b9d30c4eb13..667b0843c0d 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 -- cgit v1.2.3