XvMC: fix broken xvmc on 965
This commit is contained in:
parent
f6d8ae69b0
commit
a625a07022
|
|
@ -2409,18 +2409,31 @@ I830PutImage(ScrnInfoPtr pScrn,
|
|||
pPriv->buf = NULL;
|
||||
}
|
||||
|
||||
if (pPriv->buf == NULL) {
|
||||
pPriv->buf = drm_intel_bo_alloc(pI830->bufmgr,
|
||||
"xv buffer", alloc_size, 4096);
|
||||
if (pPriv->buf == NULL)
|
||||
return BadAlloc;
|
||||
if (!pPriv->textured && drm_intel_bo_pin(pPriv->buf, 4096) != 0) {
|
||||
drm_intel_bo_unreference(pPriv->buf);
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
||||
"Failed to pin xv buffer\n");
|
||||
return BadAlloc;
|
||||
}
|
||||
#ifdef INTEL_XVMC
|
||||
if (id == FOURCC_XVMC &&
|
||||
pPriv->rotation == RR_Rotate_0) {
|
||||
if (pPriv->buf) {
|
||||
assert(pPriv->textured);
|
||||
drm_intel_bo_unreference(pPriv->buf);
|
||||
pPriv->buf = NULL;
|
||||
}
|
||||
} else {
|
||||
#endif
|
||||
if (pPriv->buf == NULL) {
|
||||
pPriv->buf = drm_intel_bo_alloc(pI830->bufmgr,
|
||||
"xv buffer", alloc_size, 4096);
|
||||
if (pPriv->buf == NULL)
|
||||
return BadAlloc;
|
||||
if (!pPriv->textured && drm_intel_bo_pin(pPriv->buf, 4096) != 0) {
|
||||
drm_intel_bo_unreference(pPriv->buf);
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
||||
"Failed to pin xv buffer\n");
|
||||
return BadAlloc;
|
||||
}
|
||||
}
|
||||
#ifdef INTEL_XVMC
|
||||
}
|
||||
#endif
|
||||
|
||||
/* fixup pointers */
|
||||
#ifdef INTEL_XVMC
|
||||
|
|
|
|||
|
|
@ -431,11 +431,15 @@ i965_create_src_surface_state(ScrnInfoPtr scrn,
|
|||
src_surf_state->ss2.render_target_rotation = 0;
|
||||
src_surf_state->ss3.pitch = src_pitch - 1;
|
||||
|
||||
src_surf_state->ss1.base_addr =
|
||||
intel_emit_reloc(surface_bo,
|
||||
offsetof(struct brw_surface_state, ss1),
|
||||
src_bo, src_offset,
|
||||
I915_GEM_DOMAIN_SAMPLER, 0);
|
||||
if (src_bo) {
|
||||
src_surf_state->ss1.base_addr =
|
||||
intel_emit_reloc(surface_bo,
|
||||
offsetof(struct brw_surface_state, ss1),
|
||||
src_bo, src_offset,
|
||||
I915_GEM_DOMAIN_SAMPLER, 0);
|
||||
} else {
|
||||
src_surf_state->ss1.base_addr = src_offset;
|
||||
}
|
||||
|
||||
drm_intel_bo_unmap(surface_bo);
|
||||
return surface_bo;
|
||||
|
|
|
|||
Loading…
Reference in New Issue