diff options
author | Christian König <[email protected]> | 2013-05-02 16:02:05 +0200 |
---|---|---|
committer | Christian König <[email protected]> | 2013-05-03 11:00:21 +0200 |
commit | 85b0880a17a2cffb4b1116267656b33e79e1518f (patch) | |
tree | a7bb2b1c43b06726c2b2ab2cb632f3e726afb224 /src/gallium/auxiliary/vl/vl_video_buffer.c | |
parent | 379753869d75078649870f02eba5aafbdbbb30d2 (diff) |
vl/idct: fix for commit 7d2f2a0c890b1993532a45c8c392c28950ddc06e
We still need the option for handling 3D textures as well.
Should fix: https://bugs.freedesktop.org/show_bug.cgi?id=64143
Signed-off-by: Christian König <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/vl/vl_video_buffer.c')
-rw-r--r-- | src/gallium/auxiliary/vl/vl_video_buffer.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/gallium/auxiliary/vl/vl_video_buffer.c b/src/gallium/auxiliary/vl/vl_video_buffer.c index fe33325c0b4..6ef95e44be7 100644 --- a/src/gallium/auxiliary/vl/vl_video_buffer.c +++ b/src/gallium/auxiliary/vl/vl_video_buffer.c @@ -216,15 +216,20 @@ void vl_video_buffer_template(struct pipe_resource *templ, const struct pipe_video_buffer *tmpl, enum pipe_format resource_format, - unsigned array_size, unsigned usage, - unsigned plane) + unsigned depth, unsigned array_size, + unsigned usage, unsigned plane) { memset(templ, 0, sizeof(*templ)); - templ->target = array_size > 1 ? PIPE_TEXTURE_2D_ARRAY : PIPE_TEXTURE_2D; + if (depth > 1) + templ->target = PIPE_TEXTURE_3D; + else if (array_size > 1) + templ->target = PIPE_TEXTURE_2D_ARRAY; + else + templ->target = PIPE_TEXTURE_2D; templ->format = resource_format; templ->width0 = tmpl->width; templ->height0 = tmpl->height; - templ->depth0 = 1; + templ->depth0 = depth; templ->array_size = array_size; templ->bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET; templ->usage = usage; @@ -420,7 +425,7 @@ vl_video_buffer_create(struct pipe_context *pipe, result = vl_video_buffer_create_ex ( pipe, &templat, resource_formats, - tmpl->interlaced ? 2 : 1, PIPE_USAGE_STATIC + 1, tmpl->interlaced ? 2 : 1, PIPE_USAGE_STATIC ); @@ -434,7 +439,7 @@ struct pipe_video_buffer * vl_video_buffer_create_ex(struct pipe_context *pipe, const struct pipe_video_buffer *tmpl, const enum pipe_format resource_formats[VL_NUM_COMPONENTS], - unsigned array_size, unsigned usage) + unsigned depth, unsigned array_size, unsigned usage) { struct pipe_resource res_tmpl; struct pipe_resource *resources[VL_NUM_COMPONENTS]; @@ -444,7 +449,7 @@ vl_video_buffer_create_ex(struct pipe_context *pipe, memset(resources, 0, sizeof resources); - vl_video_buffer_template(&res_tmpl, tmpl, resource_formats[0], array_size, usage, 0); + vl_video_buffer_template(&res_tmpl, tmpl, resource_formats[0], depth, array_size, usage, 0); resources[0] = pipe->screen->resource_create(pipe->screen, &res_tmpl); if (!resources[0]) goto error; @@ -454,7 +459,7 @@ vl_video_buffer_create_ex(struct pipe_context *pipe, return vl_video_buffer_create_ex2(pipe, tmpl, resources); } - vl_video_buffer_template(&res_tmpl, tmpl, resource_formats[1], array_size, usage, 1); + vl_video_buffer_template(&res_tmpl, tmpl, resource_formats[1], depth, array_size, usage, 1); resources[1] = pipe->screen->resource_create(pipe->screen, &res_tmpl); if (!resources[1]) goto error; @@ -462,7 +467,7 @@ vl_video_buffer_create_ex(struct pipe_context *pipe, if (resource_formats[2] == PIPE_FORMAT_NONE) return vl_video_buffer_create_ex2(pipe, tmpl, resources); - vl_video_buffer_template(&res_tmpl, tmpl, resource_formats[2], array_size, usage, 2); + vl_video_buffer_template(&res_tmpl, tmpl, resource_formats[2], depth, array_size, usage, 2); resources[2] = pipe->screen->resource_create(pipe->screen, &res_tmpl); if (!resources[2]) goto error; |