mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 19:10:14 +01:00
nvc0: fix push_space checks for video decoding
This commit is contained in:
parent
e6479b4330
commit
30c2c34464
4 changed files with 10 additions and 9 deletions
|
|
@ -450,7 +450,7 @@ nvc0_create_decoder(struct pipe_context *context,
|
|||
dec->comm = (struct comm *)(dec->fence_map + (COMM_OFFSET/sizeof(*dec->fence_map)));
|
||||
|
||||
/* So lets test if the fence is working? */
|
||||
PUSH_SPACE(push[0], 6);
|
||||
nouveau_pushbuf_space(push[0], 6, 1, 0);
|
||||
PUSH_REFN (push[0], dec->fence_bo, NOUVEAU_BO_GART|NOUVEAU_BO_RDWR);
|
||||
BEGIN_NVC0(push[0], SUBC_BSP(0x240), 3);
|
||||
PUSH_DATAh(push[0], dec->fence_bo->offset);
|
||||
|
|
@ -461,7 +461,7 @@ nvc0_create_decoder(struct pipe_context *context,
|
|||
PUSH_DATA (push[0], 0);
|
||||
PUSH_KICK (push[0]);
|
||||
|
||||
PUSH_SPACE(push[1], 6);
|
||||
nouveau_pushbuf_space(push[1], 6, 1, 0);
|
||||
PUSH_REFN (push[1], dec->fence_bo, NOUVEAU_BO_GART|NOUVEAU_BO_RDWR);
|
||||
BEGIN_NVC0(push[1], SUBC_VP(0x240), 3);
|
||||
PUSH_DATAh(push[1], (dec->fence_bo->offset + 0x10));
|
||||
|
|
@ -472,7 +472,7 @@ nvc0_create_decoder(struct pipe_context *context,
|
|||
PUSH_DATA (push[1], 0);
|
||||
PUSH_KICK (push[1]);
|
||||
|
||||
PUSH_SPACE(push[2], 6);
|
||||
nouveau_pushbuf_space(push[2], 6, 1, 0);
|
||||
PUSH_REFN (push[2], dec->fence_bo, NOUVEAU_BO_GART|NOUVEAU_BO_RDWR);
|
||||
BEGIN_NVC0(push[2], SUBC_PPP(0x240), 3);
|
||||
PUSH_DATAh(push[2], (dec->fence_bo->offset + 0x20));
|
||||
|
|
|
|||
|
|
@ -268,6 +268,9 @@ nvc0_decoder_bsp(struct nvc0_decoder *dec, union pipe_desc desc,
|
|||
};
|
||||
int num_refs = sizeof(bo_refs)/sizeof(*bo_refs);
|
||||
|
||||
if (!dec->bitplane_bo)
|
||||
num_refs--;
|
||||
|
||||
#ifdef NVC0_DEBUG_FENCE
|
||||
fence_extra = 4;
|
||||
#endif
|
||||
|
|
@ -309,9 +312,7 @@ nvc0_decoder_bsp(struct nvc0_decoder *dec, union pipe_desc desc,
|
|||
|
||||
nvc0_decoder_vp_caps(dec, desc, target, comm_seq, vp_caps, is_ref, refs);
|
||||
|
||||
PUSH_SPACE(push, 6 + (codec == PIPE_VIDEO_CODEC_MPEG4_AVC ? 9 : 7) + fence_extra + 2);
|
||||
if (!dec->bitplane_bo)
|
||||
num_refs--;
|
||||
nouveau_pushbuf_space(push, 6 + (codec == PIPE_VIDEO_CODEC_MPEG4_AVC ? 9 : 7) + fence_extra + 2, num_refs, 0);
|
||||
nouveau_pushbuf_refn(push, bo_refs, num_refs);
|
||||
|
||||
caps |= 0 << 16; // reset struct comm if flag is set
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ nvc0_decoder_ppp(struct nvc0_decoder *dec, union pipe_desc desc, struct nvc0_vid
|
|||
fence_extra = 4;
|
||||
#endif
|
||||
|
||||
PUSH_SPACE(push, 11 + (codec == PIPE_VIDEO_CODEC_VC1 ? 2 : 0) + 3 + fence_extra + 2);
|
||||
nouveau_pushbuf_space(push, 11 + (codec == PIPE_VIDEO_CODEC_VC1 ? 2 : 0) + 3 + fence_extra + 2, 4, 0);
|
||||
|
||||
switch (codec) {
|
||||
case PIPE_VIDEO_CODEC_MPEG12: {
|
||||
|
|
|
|||
|
|
@ -580,8 +580,8 @@ nvc0_decoder_vp(struct nvc0_decoder *dec, union pipe_desc desc,
|
|||
if (!is_ref)
|
||||
nvc0_decoder_kick_ref(dec, target);
|
||||
|
||||
PUSH_SPACE(push, 8 + 3 * (codec != PIPE_VIDEO_CODEC_MPEG12) +
|
||||
6 + codec_extra + fence_extra + 2);
|
||||
nouveau_pushbuf_space(push, 8 + 3 * (codec != PIPE_VIDEO_CODEC_MPEG12) +
|
||||
6 + codec_extra + fence_extra + 2, num_refs, 0);
|
||||
|
||||
nouveau_pushbuf_refn(push, bo_refs, num_refs);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue