diff options
author | Roland Scheidegger <sroland@vmware.com> | 2013-06-07 21:03:40 +0200 |
---|---|---|
committer | Roland Scheidegger <sroland@vmware.com> | 2013-06-07 21:15:01 +0200 |
commit | d8146f240e628e70d4c07f7e805a179f70c36e23 (patch) | |
tree | edfc30c3469fc1cb24ff96891453d1c9806e41d3 /src/gallium/drivers/llvmpipe/lp_texture.c | |
parent | 0f4c08aea2da3bd808109d09dbcdc249d1fb6b74 (diff) |
llvmpipe: add support for layered rendering
Mostly just make sure the layer parameter gets passed through to the right
places (and get clamped, can do this at setup time), fix up clears to
clear all layers and disable opaque optimization. Luckily don't need to
touch the jitted code.
(Clears invoked via pipe's clear_render_target method will not work however
since the pipe_util_clear function used for it doesn't handle clearing
multiple layers yet.)
v2: per Brian's suggestion, prettify var initialization and add some comments,
add assertion for impossible layer specification for surface.
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_texture.c')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_texture.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_texture.c b/src/gallium/drivers/llvmpipe/lp_texture.c index f1a1ed0960a..2263e0a5b47 100644 --- a/src/gallium/drivers/llvmpipe/lp_texture.c +++ b/src/gallium/drivers/llvmpipe/lp_texture.c @@ -496,14 +496,12 @@ llvmpipe_create_surface(struct pipe_context *pipe, ps->format = surf_tmpl->format; if (llvmpipe_resource_is_texture(pt)) { assert(surf_tmpl->u.tex.level <= pt->last_level); + assert(surf_tmpl->u.tex.first_layer <= surf_tmpl->u.tex.last_layer); ps->width = u_minify(pt->width0, surf_tmpl->u.tex.level); ps->height = u_minify(pt->height0, surf_tmpl->u.tex.level); ps->u.tex.level = surf_tmpl->u.tex.level; ps->u.tex.first_layer = surf_tmpl->u.tex.first_layer; ps->u.tex.last_layer = surf_tmpl->u.tex.last_layer; - if (ps->u.tex.first_layer != ps->u.tex.last_layer) { - debug_printf("creating surface with multiple layers, rendering to first layer only\n"); - } } else { /* setting width as number of elements should get us correct renderbuffer width */ @@ -520,7 +518,7 @@ llvmpipe_create_surface(struct pipe_context *pipe, } -static void +static void llvmpipe_surface_destroy(struct pipe_context *pipe, struct pipe_surface *surf) { |