mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-19 22:18:18 +02:00
[g3dvl] give mc and ycbcr stage its own vertex element state
This commit is contained in:
parent
b1c44b0ea6
commit
c87b83d4b2
3 changed files with 32 additions and 8 deletions
|
|
@ -715,10 +715,10 @@ vl_create_mpeg12_decoder(struct pipe_video_context *context,
|
|||
|
||||
dec->quads = vl_vb_upload_quads(dec->pipe, 2, 2);
|
||||
for (i = 0; i < VL_MAX_PLANES; ++i)
|
||||
dec->ves_eb[i] = vl_vb_get_elems_state(dec->pipe, i, 0);
|
||||
dec->ves_eb[i] = vl_vb_get_ves_eb(dec->pipe, i);
|
||||
|
||||
for (i = 0; i < 2; ++i)
|
||||
dec->ves_mv[i] = vl_vb_get_elems_state(dec->pipe, 0, i);
|
||||
dec->ves_mv[i] = vl_vb_get_ves_mv(dec->pipe, i);
|
||||
|
||||
dec->base.width = align(width, MACROBLOCK_WIDTH);
|
||||
dec->base.height = align(height, MACROBLOCK_HEIGHT);
|
||||
|
|
|
|||
|
|
@ -130,10 +130,12 @@ vl_vb_element_helper(struct pipe_vertex_element* elements, unsigned num_elements
|
|||
}
|
||||
|
||||
void *
|
||||
vl_vb_get_elems_state(struct pipe_context *pipe, int component, int motionvector)
|
||||
vl_vb_get_ves_eb(struct pipe_context *pipe, int component)
|
||||
{
|
||||
struct pipe_vertex_element vertex_elems[NUM_VS_INPUTS];
|
||||
|
||||
assert(pipe);
|
||||
|
||||
memset(&vertex_elems, 0, sizeof(vertex_elems));
|
||||
vertex_elems[VS_I_RECT] = vl_vb_get_quad_vertex_element();
|
||||
|
||||
|
|
@ -144,11 +146,29 @@ vl_vb_get_elems_state(struct pipe_context *pipe, int component, int motionvector
|
|||
vertex_elems[VS_I_FLAGS].src_format = PIPE_FORMAT_R8G8B8A8_USCALED;
|
||||
|
||||
/* empty block element of selected component */
|
||||
vertex_elems[VS_I_EB].src_offset = 8 + component * 4;
|
||||
vertex_elems[VS_I_EB].src_offset = offsetof(struct vl_vertex_stream, eb[component]);
|
||||
vertex_elems[VS_I_EB].src_format = PIPE_FORMAT_R8G8B8A8_USCALED;
|
||||
|
||||
vl_vb_element_helper(&vertex_elems[VS_I_VPOS], NUM_VS_INPUTS - 1, 1);
|
||||
|
||||
return pipe->create_vertex_elements_state(pipe, NUM_VS_INPUTS, vertex_elems);
|
||||
}
|
||||
|
||||
void *
|
||||
vl_vb_get_ves_mv(struct pipe_context *pipe, int motionvector)
|
||||
{
|
||||
struct pipe_vertex_element vertex_elems[NUM_VS_INPUTS];
|
||||
|
||||
memset(&vertex_elems, 0, sizeof(vertex_elems));
|
||||
vertex_elems[VS_I_RECT] = vl_vb_get_quad_vertex_element();
|
||||
|
||||
assert(pipe);
|
||||
|
||||
/* Position element */
|
||||
vertex_elems[VS_I_VPOS].src_format = PIPE_FORMAT_R16G16_SSCALED;
|
||||
|
||||
/* motion vector TOP element */
|
||||
vertex_elems[VS_I_MV_TOP].src_offset = 20 + motionvector * 16;
|
||||
vertex_elems[VS_I_MV_TOP].src_offset = offsetof(struct vl_vertex_stream, mv[motionvector * 2]);
|
||||
vertex_elems[VS_I_MV_TOP].src_format = PIPE_FORMAT_R16G16B16A16_SSCALED;
|
||||
|
||||
/* motion vector BOTTOM element */
|
||||
|
|
|
|||
|
|
@ -42,10 +42,12 @@ enum VS_INPUT
|
|||
{
|
||||
VS_I_RECT,
|
||||
VS_I_VPOS,
|
||||
|
||||
VS_I_FLAGS,
|
||||
VS_I_EB,
|
||||
VS_I_MV_TOP,
|
||||
VS_I_MV_BOTTOM,
|
||||
|
||||
VS_I_MV_TOP = VS_I_FLAGS,
|
||||
VS_I_MV_BOTTOM = VS_I_EB,
|
||||
|
||||
NUM_VS_INPUTS
|
||||
};
|
||||
|
|
@ -64,7 +66,9 @@ struct vl_vertex_buffer
|
|||
struct pipe_vertex_buffer vl_vb_upload_quads(struct pipe_context *pipe,
|
||||
unsigned blocks_x, unsigned blocks_y);
|
||||
|
||||
void *vl_vb_get_elems_state(struct pipe_context *pipe, int component, int motionvector);
|
||||
void *vl_vb_get_ves_eb(struct pipe_context *pipe, int component);
|
||||
|
||||
void *vl_vb_get_ves_mv(struct pipe_context *pipe, int motionvector);
|
||||
|
||||
struct pipe_vertex_buffer vl_vb_init(struct vl_vertex_buffer *buffer,
|
||||
struct pipe_context *pipe,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue