mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-20 05:36:15 +00:00
drm/vmwgfx: Fix a screen object framebuffer dirty corner case
If there are no cliprects for a particular crtc, an invalid command would have been generated. If that's the case, instead ditch the generated command sequence. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Sinclair Yeh <syeh@vmware.com>
This commit is contained in:
parent
f3b3355073
commit
fea7dd547b
1 changed files with 15 additions and 0 deletions
|
|
@ -738,6 +738,11 @@ static void vmw_sou_surface_fifo_commit(struct vmw_kms_dirty *dirty)
|
|||
SVGASignedRect *blit = (SVGASignedRect *) &cmd[1];
|
||||
int i;
|
||||
|
||||
if (!dirty->num_hits) {
|
||||
vmw_fifo_commit(dirty->dev_priv, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
cmd->header.id = SVGA_3D_CMD_BLIT_SURFACE_TO_SCREEN;
|
||||
cmd->header.size = sizeof(cmd->body) + region_size;
|
||||
|
||||
|
|
@ -875,6 +880,11 @@ int vmw_kms_sou_do_surface_dirty(struct vmw_private *dev_priv,
|
|||
*/
|
||||
static void vmw_sou_dmabuf_fifo_commit(struct vmw_kms_dirty *dirty)
|
||||
{
|
||||
if (!dirty->num_hits) {
|
||||
vmw_fifo_commit(dirty->dev_priv, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
vmw_fifo_commit(dirty->dev_priv,
|
||||
sizeof(struct vmw_kms_sou_dmabuf_blit) *
|
||||
dirty->num_hits);
|
||||
|
|
@ -967,6 +977,11 @@ out_revert:
|
|||
*/
|
||||
static void vmw_sou_readback_fifo_commit(struct vmw_kms_dirty *dirty)
|
||||
{
|
||||
if (!dirty->num_hits) {
|
||||
vmw_fifo_commit(dirty->dev_priv, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
vmw_fifo_commit(dirty->dev_priv,
|
||||
sizeof(struct vmw_kms_sou_readback_blit) *
|
||||
dirty->num_hits);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue