[Mesa-dev] [PATCH 1/2] gallium/targets: Haiku softpipe, perform better framebuffer validation

Alexander von Gluck IV kallisti5 at unixzen.com
Wed Aug 27 17:31:56 PDT 2014


* Check for back left attachment as well
* Set and act on pipe format none
---
 .../targets/haiku-softpipe/GalliumFramebuffer.cpp  |   20 +++++++++++++-------
 1 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/gallium/targets/haiku-softpipe/GalliumFramebuffer.cpp b/src/gallium/targets/haiku-softpipe/GalliumFramebuffer.cpp
index 84c8bd2..d6bfdb4 100644
--- a/src/gallium/targets/haiku-softpipe/GalliumFramebuffer.cpp
+++ b/src/gallium/targets/haiku-softpipe/GalliumFramebuffer.cpp
@@ -100,8 +100,10 @@ hgl_framebuffer_validate(struct st_context_iface* stctx,
 	
 			switch(statts[i]) {
 				case ST_ATTACHMENT_FRONT_LEFT:
+				case ST_ATTACHMENT_BACK_LEFT:
 					format = context->stVisual->color_format;
-					bind = PIPE_BIND_RENDER_TARGET;
+					bind = PIPE_BIND_DISPLAY_TARGET
+						| PIPE_BIND_RENDER_TARGET;
 					break;
 				case ST_ATTACHMENT_DEPTH_STENCIL:
 					format = context->stVisual->depth_stencil_format;
@@ -112,14 +114,18 @@ hgl_framebuffer_validate(struct st_context_iface* stctx,
 					bind = PIPE_BIND_RENDER_TARGET;
 					break;
 				default:
-					ERROR("%s: Unexpected attachment type!\n", __func__);
+					format = PIPE_FORMAT_NONE;
+					break;
 			}
-			templat.format = format;
-			templat.bind = bind;
 
-			struct pipe_screen* screen = context->manager->screen;
-			context->textures[i] = screen->resource_create(screen, &templat);
-			out[i] = context->textures[i];
+			if (format != PIPE_FORMAT_NONE) {
+				templat.format = format;
+				templat.bind = bind;
+
+				struct pipe_screen* screen = context->manager->screen;
+				context->textures[i] = screen->resource_create(screen, &templat);
+				out[i] = context->textures[i];
+			}
 		}
 	}
 
-- 
1.7.1



More information about the mesa-dev mailing list