diff options
author | Thomas Hellstrom <thellstrom@vmware.com> | 2010-01-05 12:18:24 +0100 |
---|---|---|
committer | Thomas Hellstrom <thellstrom@vmware.com> | 2010-01-05 12:20:40 +0100 |
commit | 6fc28f8cfc9018149c6aef51799e8e069fae48d4 (patch) | |
tree | caa6eff3617c299f91fb5162290b44e8317bb240 | |
parent | 29049b1b957c8e45893e2889e749b074bf6adb0e (diff) |
vmwgfx: Don't promote updates from GMR-backed scanouts to fullscreen.
That's unnecessary since partial screen updates from GMRs are fast.
Also fix cliprect pointer dereferencing
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
-rw-r--r-- | vmwgfx_kms.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/vmwgfx_kms.c b/vmwgfx_kms.c index b1af76e..686692d 100644 --- a/vmwgfx_kms.c +++ b/vmwgfx_kms.c @@ -553,9 +553,7 @@ int vmw_framebuffer_dmabuf_dirty(struct drm_framebuffer *framebuffer, } *cmd; int i, increment = 1; - if (!num_clips || - !(dev_priv->fifo.capabilities & - SVGA_FIFO_CAP_SCREEN_OBJECT)) { + if (!num_clips) { num_clips = 1; clips = &norect; norect.x1 = norect.y1 = 0; @@ -574,10 +572,10 @@ int vmw_framebuffer_dmabuf_dirty(struct drm_framebuffer *framebuffer, for (i = 0; i < num_clips; i++, clips += increment) { cmd[i].header = cpu_to_le32(SVGA_CMD_UPDATE); - cmd[i].body.x = cpu_to_le32(clips[i].x1); - cmd[i].body.y = cpu_to_le32(clips[i].y1); - cmd[i].body.width = cpu_to_le32(clips[i].x2 - clips[i].x1); - cmd[i].body.height = cpu_to_le32(clips[i].y2 - clips[i].y1); + cmd[i].body.x = cpu_to_le32(clips->x1); + cmd[i].body.y = cpu_to_le32(clips->y1); + cmd[i].body.width = cpu_to_le32(clips->x2 - clips->x1); + cmd[i].body.height = cpu_to_le32(clips->y2 - clips->y1); } vmw_fifo_commit(dev_priv, sizeof(*cmd) * num_clips); |