X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fauxiliary%2Fvl%2Fvl_vertex_buffers.c;h=1e326a136208edb88eafd26fde232c7fe09ad023;hb=4a72d859b4f8d0444eb7f38606d59d7ddc9ea8fa;hp=c45f96cec5181e4427eef1a14b729a7b2d832e28;hpb=aa63ebc48a2ee1ee9afbf2112d4d25e8a9a8d1e8;p=mesa.git diff --git a/src/gallium/auxiliary/vl/vl_vertex_buffers.c b/src/gallium/auxiliary/vl/vl_vertex_buffers.c index c45f96cec51..1e326a13620 100644 --- a/src/gallium/auxiliary/vl/vl_vertex_buffers.c +++ b/src/gallium/auxiliary/vl/vl_vertex_buffers.c @@ -26,7 +26,7 @@ **************************************************************************/ #include -#include +#include "util/u_format.h" #include "vl_vertex_buffers.h" #include "vl_types.h" @@ -65,7 +65,7 @@ vl_vb_upload_quads(struct pipe_context *pipe) ( pipe, quad.buffer, - PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD, + PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD_RANGE, &buf_transfer ); @@ -109,7 +109,7 @@ vl_vb_upload_pos(struct pipe_context *pipe, unsigned width, unsigned height) ( pipe, pos.buffer, - PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD, + PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD_RANGE, &buf_transfer ); @@ -168,9 +168,12 @@ vl_vb_get_ves_ycbcr(struct pipe_context *pipe) /* Position element */ vertex_elems[VS_I_VPOS].src_format = PIPE_FORMAT_R8G8B8A8_USCALED; - vl_vb_element_helper(&vertex_elems[VS_I_VPOS], 1, 1); + /* block num element */ + vertex_elems[VS_I_BLOCK_NUM].src_format = PIPE_FORMAT_R32_FLOAT; + + vl_vb_element_helper(&vertex_elems[VS_I_VPOS], 2, 1); - return pipe->create_vertex_elements_state(pipe, 2, vertex_elems); + return pipe->create_vertex_elements_state(pipe, 3, vertex_elems); } void * @@ -212,13 +215,13 @@ vl_vb_init(struct vl_vertex_buffer *buffer, struct pipe_context *pipe, size = width * height; - for (i = 0; i < VL_MAX_PLANES; ++i) { + for (i = 0; i < VL_NUM_COMPONENTS; ++i) { buffer->ycbcr[i].resource = pipe_buffer_create ( pipe->screen, PIPE_BIND_VERTEX_BUFFER, PIPE_USAGE_STREAM, - sizeof(struct pipe_ycbcr_block) * size * 4 + sizeof(struct vl_ycbcr_block) * size * 4 ); if (!buffer->ycbcr[i].resource) goto error_ycbcr; @@ -230,7 +233,7 @@ vl_vb_init(struct vl_vertex_buffer *buffer, struct pipe_context *pipe, pipe->screen, PIPE_BIND_VERTEX_BUFFER, PIPE_USAGE_STREAM, - sizeof(struct pipe_motionvector) * size + sizeof(struct vl_motionvector) * size ); if (!buffer->mv[i].resource) goto error_mv; @@ -240,15 +243,21 @@ vl_vb_init(struct vl_vertex_buffer *buffer, struct pipe_context *pipe, return true; error_mv: - for (i = 0; i < VL_MAX_PLANES; ++i) + for (i = 0; i < VL_NUM_COMPONENTS; ++i) pipe_resource_reference(&buffer->mv[i].resource, NULL); error_ycbcr: - for (i = 0; i < VL_MAX_PLANES; ++i) + for (i = 0; i < VL_NUM_COMPONENTS; ++i) pipe_resource_reference(&buffer->ycbcr[i].resource, NULL); return false; } +unsigned +vl_vb_attributes_per_plock(struct vl_vertex_buffer *buffer) +{ + return 1; +} + struct pipe_vertex_buffer vl_vb_get_ycbcr(struct vl_vertex_buffer *buffer, int component) { @@ -256,7 +265,7 @@ vl_vb_get_ycbcr(struct vl_vertex_buffer *buffer, int component) assert(buffer); - buf.stride = sizeof(struct pipe_ycbcr_block); + buf.stride = sizeof(struct vl_ycbcr_block); buf.buffer_offset = 0; buf.buffer = buffer->ycbcr[component].resource; @@ -270,7 +279,7 @@ vl_vb_get_mv(struct vl_vertex_buffer *buffer, int motionvector) assert(buffer); - buf.stride = sizeof(struct pipe_motionvector); + buf.stride = sizeof(struct vl_motionvector); buf.buffer_offset = 0; buf.buffer = buffer->mv[motionvector].resource; @@ -284,12 +293,12 @@ vl_vb_map(struct vl_vertex_buffer *buffer, struct pipe_context *pipe) assert(buffer && pipe); - for (i = 0; i < VL_MAX_PLANES; ++i) { + for (i = 0; i < VL_NUM_COMPONENTS; ++i) { buffer->ycbcr[i].vertex_stream = pipe_buffer_map ( pipe, buffer->ycbcr[i].resource, - PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD, + PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD_RANGE, &buffer->ycbcr[i].transfer ); } @@ -299,18 +308,18 @@ vl_vb_map(struct vl_vertex_buffer *buffer, struct pipe_context *pipe) ( pipe, buffer->mv[i].resource, - PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD, + PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD_RANGE, &buffer->mv[i].transfer ); } } -struct pipe_ycbcr_block * +struct vl_ycbcr_block * vl_vb_get_ycbcr_stream(struct vl_vertex_buffer *buffer, int component) { assert(buffer); - assert(component < VL_MAX_PLANES); + assert(component < VL_NUM_COMPONENTS); return buffer->ycbcr[component].vertex_stream; } @@ -323,7 +332,7 @@ vl_vb_get_mv_stream_stride(struct vl_vertex_buffer *buffer) return buffer->width; } -struct pipe_motionvector * +struct vl_motionvector * vl_vb_get_mv_stream(struct vl_vertex_buffer *buffer, int ref_frame) { assert(buffer); @@ -339,7 +348,7 @@ vl_vb_unmap(struct vl_vertex_buffer *buffer, struct pipe_context *pipe) assert(buffer && pipe); - for (i = 0; i < VL_MAX_PLANES; ++i) { + for (i = 0; i < VL_NUM_COMPONENTS; ++i) { pipe_buffer_unmap(pipe, buffer->ycbcr[i].transfer); } @@ -355,7 +364,7 @@ vl_vb_cleanup(struct vl_vertex_buffer *buffer) assert(buffer); - for (i = 0; i < VL_MAX_PLANES; ++i) { + for (i = 0; i < VL_NUM_COMPONENTS; ++i) { pipe_resource_reference(&buffer->ycbcr[i].resource, NULL); }