diff options
Diffstat (limited to 'drivers/gpu/drm/virtio/virtgpu_plane.c')
| -rw-r--r-- | drivers/gpu/drm/virtio/virtgpu_plane.c | 23 | 
1 files changed, 17 insertions, 6 deletions
| diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c index 6a311cd93440..42ac08ed1442 100644 --- a/drivers/gpu/drm/virtio/virtgpu_plane.c +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c @@ -174,12 +174,23 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane,  			  plane->state->src_h >> 16,  			  plane->state->src_x >> 16,  			  plane->state->src_y >> 16); -		virtio_gpu_cmd_set_scanout(vgdev, output->index, -					   bo->hw_res_handle, -					   plane->state->src_w >> 16, -					   plane->state->src_h >> 16, -					   plane->state->src_x >> 16, -					   plane->state->src_y >> 16); + +		if (bo->host3d_blob || bo->guest_blob) { +			virtio_gpu_cmd_set_scanout_blob +						(vgdev, output->index, bo, +						 plane->state->fb, +						 plane->state->src_w >> 16, +						 plane->state->src_h >> 16, +						 plane->state->src_x >> 16, +						 plane->state->src_y >> 16); +		} else { +			virtio_gpu_cmd_set_scanout(vgdev, output->index, +						   bo->hw_res_handle, +						   plane->state->src_w >> 16, +						   plane->state->src_h >> 16, +						   plane->state->src_x >> 16, +						   plane->state->src_y >> 16); +		}  	}  	virtio_gpu_cmd_resource_flush(vgdev, bo->hw_res_handle, | 
