summaryrefslogtreecommitdiffstats
path: root/src/gallium/targets
diff options
context:
space:
mode:
authorAlexander von Gluck IV <[email protected]>2014-08-25 14:32:42 +0000
committerAlexander von Gluck IV <[email protected]>2014-08-28 21:27:26 -0400
commit86d1aa8531fabb41c32c128305af625458c0fa7f (patch)
tree0dc5df81c55ac0662a9c2cefe05cec97a5ae8b14 /src/gallium/targets
parent96b45e67d506a02dd082fe2abf5d016e1fdeb4da (diff)
gallium/targets: Haiku softpipe, perform better framebuffer validation
* Check for back left attachment as well * Set and act on pipe format none Ack'ed by Emil Velikov <[email protected]>
Diffstat (limited to 'src/gallium/targets')
-rw-r--r--src/gallium/targets/haiku-softpipe/GalliumFramebuffer.cpp20
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 84c8bd2baef..d6bfdb41b84 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];
+ }
}
}