Displaying 20 results from an estimated 73 matches for "fb_copyarea".
2009 Dec 27
1
[PATCH] drm/nouveau: create function for "dealing" with gpu lockup
...__NV50_FBCON_H__ */
diff --git a/drivers/gpu/drm/nouveau/nv04_fbcon.c b/drivers/gpu/drm/nouveau/nv04_fbcon.c
index 09a3107..0ae7069 100644
--- a/drivers/gpu/drm/nouveau/nv04_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nv04_fbcon.c
@@ -39,8 +39,7 @@ nv04_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region)
return;
if (!(info->flags & FBINFO_HWACCEL_DISABLED) && RING_SPACE(chan, 4)) {
- NV_ERROR(dev, "GPU lockup - switching to software fbcon\n");
- info->flags |= FBINFO_HWACCEL_DISABLED;
+ NV_GPU_LOCKUP(info);
}
if (info->flags & FBINFO_HWACC...
2020 Oct 16
2
[PATCH v4 10/10] drm/fb_helper: Support framebuffers in I/O memory
...r;
> + struct drm_client_buffer *buffer = fb_helper->buffer;
> +
> + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
> + drm_fb_helper_sys_fillrect(info, rect);
> + else
> + drm_fb_helper_cfb_fillrect(info, rect);
> +}
> +
> +static void drm_fbdev_fb_copyarea(struct fb_info *info,
> + const struct fb_copyarea *area)
> +{
> + struct drm_fb_helper *fb_helper = info->par;
> + struct drm_client_buffer *buffer = fb_helper->buffer;
> +
> + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
> + drm_fb_helper_sy...
2020 Oct 22
2
[PATCH v5 10/10] drm/fb_helper: Support framebuffers in I/O memory
...; +static void drm_fbdev_fb_fillrect(struct fb_info *info,
> + const struct fb_fillrect *rect)
> +{
> + if (drm_fbdev_use_iomem(info))
> + drm_fb_helper_cfb_fillrect(info, rect);
> + else
> + drm_fb_helper_sys_fillrect(info, rect);
> +}
> +
> +static void drm_fbdev_fb_copyarea(struct fb_info *info,
> + const struct fb_copyarea *area)
> +{
> + if (drm_fbdev_use_iomem(info))
> + drm_fb_helper_cfb_copyarea(info, area);
> + else
> + drm_fb_helper_sys_copyarea(info, area);
> +}
> +
> +static void drm_fbdev_fb_imageblit(struct fb_info *info,
&...
2020 Oct 24
1
[PATCH v5 10/10] drm/fb_helper: Support framebuffers in I/O memory
...; +static void drm_fbdev_fb_fillrect(struct fb_info *info,
> + const struct fb_fillrect *rect)
> +{
> + if (drm_fbdev_use_iomem(info))
> + drm_fb_helper_cfb_fillrect(info, rect);
> + else
> + drm_fb_helper_sys_fillrect(info, rect);
> +}
> +
> +static void drm_fbdev_fb_copyarea(struct fb_info *info,
> + const struct fb_copyarea *area)
> +{
> + if (drm_fbdev_use_iomem(info))
> + drm_fb_helper_cfb_copyarea(info, area);
> + else
> + drm_fb_helper_sys_copyarea(info, area);
> +}
> +
> +static void drm_fbdev_fb_imageblit(struct fb_info *info,
&...
2020 Oct 16
1
[PATCH v4 10/10] drm/fb_helper: Support framebuffers in I/O memory
...r;
> + struct drm_client_buffer *buffer = fb_helper->buffer;
> +
> + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
> + drm_fb_helper_sys_fillrect(info, rect);
> + else
> + drm_fb_helper_cfb_fillrect(info, rect);
> +}
> +
> +static void drm_fbdev_fb_copyarea(struct fb_info *info,
> + const struct fb_copyarea *area)
> +{
> + struct drm_fb_helper *fb_helper = info->par;
> + struct drm_client_buffer *buffer = fb_helper->buffer;
> +
> + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
> + drm_fb_helper_sy...
2020 Oct 02
2
[PATCH v3 6/7] drm/fb_helper: Support framebuffers in I/O memory
...r;
> + struct drm_client_buffer *buffer = fb_helper->buffer;
> +
> + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
> + drm_fb_helper_sys_fillrect(info, rect);
> + else
> + drm_fb_helper_cfb_fillrect(info, rect);
> +}
> +
> +static void drm_fbdev_fb_copyarea(struct fb_info *info,
> + const struct fb_copyarea *area)
> +{
> + struct drm_fb_helper *fb_helper = info->par;
> + struct drm_client_buffer *buffer = fb_helper->buffer;
> +
> + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
> + drm_fb_helper_sy...
2020 Oct 15
0
[PATCH v4 10/10] drm/fb_helper: Support framebuffers in I/O memory
...struct drm_fb_helper *fb_helper = info->par;
+ struct drm_client_buffer *buffer = fb_helper->buffer;
+
+ if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
+ drm_fb_helper_sys_fillrect(info, rect);
+ else
+ drm_fb_helper_cfb_fillrect(info, rect);
+}
+
+static void drm_fbdev_fb_copyarea(struct fb_info *info,
+ const struct fb_copyarea *area)
+{
+ struct drm_fb_helper *fb_helper = info->par;
+ struct drm_client_buffer *buffer = fb_helper->buffer;
+
+ if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
+ drm_fb_helper_sys_copyarea(info, area);
+ else
+ d...
2020 Oct 20
0
[PATCH v5 10/10] drm/fb_helper: Support framebuffers in I/O memory
...+ if (err)
+ return err;
+
+ return ret;
+}
+
+static void drm_fbdev_fb_fillrect(struct fb_info *info,
+ const struct fb_fillrect *rect)
+{
+ if (drm_fbdev_use_iomem(info))
+ drm_fb_helper_cfb_fillrect(info, rect);
+ else
+ drm_fb_helper_sys_fillrect(info, rect);
+}
+
+static void drm_fbdev_fb_copyarea(struct fb_info *info,
+ const struct fb_copyarea *area)
+{
+ if (drm_fbdev_use_iomem(info))
+ drm_fb_helper_cfb_copyarea(info, area);
+ else
+ drm_fb_helper_sys_copyarea(info, area);
+}
+
+static void drm_fbdev_fb_imageblit(struct fb_info *info,
+ const struct fb_image *image)
+{
+ if...
2020 Oct 28
0
[PATCH v6 10/10] drm/fb_helper: Support framebuffers in I/O memory
...+ if (err)
+ return err;
+
+ return ret;
+}
+
+static void drm_fbdev_fb_fillrect(struct fb_info *info,
+ const struct fb_fillrect *rect)
+{
+ if (drm_fbdev_use_iomem(info))
+ drm_fb_helper_cfb_fillrect(info, rect);
+ else
+ drm_fb_helper_sys_fillrect(info, rect);
+}
+
+static void drm_fbdev_fb_copyarea(struct fb_info *info,
+ const struct fb_copyarea *area)
+{
+ if (drm_fbdev_use_iomem(info))
+ drm_fb_helper_cfb_copyarea(info, area);
+ else
+ drm_fb_helper_sys_copyarea(info, area);
+}
+
+static void drm_fbdev_fb_imageblit(struct fb_info *info,
+ const struct fb_image *image)
+{
+ if...
2020 Oct 16
0
[PATCH v4 10/10] drm/fb_helper: Support framebuffers in I/O memory
...er = fb_helper->buffer;
> > +
> > + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
> > + drm_fb_helper_sys_fillrect(info, rect);
> > + else
> > + drm_fb_helper_cfb_fillrect(info, rect);
> > +}
> > +
> > +static void drm_fbdev_fb_copyarea(struct fb_info *info,
> > + const struct fb_copyarea *area)
> > +{
> > + struct drm_fb_helper *fb_helper = info->par;
> > + struct drm_client_buffer *buffer = fb_helper->buffer;
> > +
> > + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_i...
2020 Oct 08
1
[PATCH v3 6/7] drm/fb_helper: Support framebuffers in I/O memory
...+ if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
>>> + drm_fb_helper_sys_fillrect(info, rect);
>>> + else
>>> + drm_fb_helper_cfb_fillrect(info, rect);
>>> +}
>>> +
>>> +static void drm_fbdev_fb_copyarea(struct fb_info *info,
>>> + const struct fb_copyarea *area)
>>> +{
>>> + struct drm_fb_helper *fb_helper = info->par;
>>> + struct drm_client_buffer *buffer = fb_helper->buffer;
>>> +
>>> + if (drm...
2020 Oct 22
0
[PATCH v5 10/10] drm/fb_helper: Support framebuffers in I/O memory
...(struct fb_info *info,
>> + const struct fb_fillrect *rect)
>> +{
>> + if (drm_fbdev_use_iomem(info))
>> + drm_fb_helper_cfb_fillrect(info, rect);
>> + else
>> + drm_fb_helper_sys_fillrect(info, rect);
>> +}
>> +
>> +static void drm_fbdev_fb_copyarea(struct fb_info *info,
>> + const struct fb_copyarea *area)
>> +{
>> + if (drm_fbdev_use_iomem(info))
>> + drm_fb_helper_cfb_copyarea(info, area);
>> + else
>> + drm_fb_helper_sys_copyarea(info, area);
>> +}
>> +
>> +static void drm_fbdev_...
2020 Oct 16
0
[PATCH v4 10/10] drm/fb_helper: Support framebuffers in I/O memory
...er = fb_helper->buffer;
> > +
> > + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
> > + drm_fb_helper_sys_fillrect(info, rect);
> > + else
> > + drm_fb_helper_cfb_fillrect(info, rect);
> > +}
> > +
> > +static void drm_fbdev_fb_copyarea(struct fb_info *info,
> > + const struct fb_copyarea *area)
> > +{
> > + struct drm_fb_helper *fb_helper = info->par;
> > + struct drm_client_buffer *buffer = fb_helper->buffer;
> > +
> > + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_i...
2020 Sep 29
0
[PATCH v3 6/7] drm/fb_helper: Support framebuffers in I/O memory
...struct drm_fb_helper *fb_helper = info->par;
+ struct drm_client_buffer *buffer = fb_helper->buffer;
+
+ if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
+ drm_fb_helper_sys_fillrect(info, rect);
+ else
+ drm_fb_helper_cfb_fillrect(info, rect);
+}
+
+static void drm_fbdev_fb_copyarea(struct fb_info *info,
+ const struct fb_copyarea *area)
+{
+ struct drm_fb_helper *fb_helper = info->par;
+ struct drm_client_buffer *buffer = fb_helper->buffer;
+
+ if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
+ drm_fb_helper_sys_copyarea(info, area);
+ else
+ d...
2023 Jan 09
1
[PATCH] drm/nouveau: Remove file nouveau_fbcon.c
...e
- ret = nvc0_fbcon_fillrect(info, rect);
- mutex_unlock(&drm->client.mutex);
- }
-
- if (ret == 0)
- return;
-
- if (ret != -ENODEV)
- nouveau_fbcon_gpu_lockup(info);
- drm_fb_helper_cfb_fillrect(info, rect);
-}
-
-static void
-nouveau_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *image)
-{
- struct nouveau_fbdev *fbcon = info->par;
- struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev);
- struct nvif_device *device = &drm->client.device;
- int ret;
-
- if (info->state != FBINFO_STATE_RUNNING)
- return;
-
- ret = -ENODEV;
- if (!in_interrupt() &&...
2023 Jan 09
1
[PATCH] drm/nouveau: Remove file nouveau_fbcon.c
...> - if (ret == 0)
> - return;
> -
> - if (ret != -ENODEV)
> - nouveau_fbcon_gpu_lockup(info);
> - drm_fb_helper_cfb_fillrect(info, rect);
> -}
> -
> -static void
> -nouveau_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *image)
> -{
> - struct nouveau_fbdev *fbcon = info->par;
> - struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev);
> - struct nvif_device *device = &drm->client.device;
> - int ret;
> -
> - if (info->state != FBINFO_STATE_RUNNI...
2020 Oct 02
0
[PATCH v3 6/7] drm/fb_helper: Support framebuffers in I/O memory
...; > +
> > + if (drm_fbdev_use_shadow_fb(fb_helper) || !buffer->map.is_iomem)
> > + drm_fb_helper_sys_fillrect(info, rect);
> > + else
> > + drm_fb_helper_cfb_fillrect(info, rect);
> > +}
> > +
> > +static void drm_fbdev_fb_copyarea(struct fb_info *info,
> > + const struct fb_copyarea *area)
> > +{
> > + struct drm_fb_helper *fb_helper = info->par;
> > + struct drm_client_buffer *buffer = fb_helper->buffer;
> > +
> > + if (drm_fbdev_use_shadow_...
2023 Jan 09
1
[PATCH] drm/nouveau: Remove file nouveau_fbcon.c
...- return;
>> -
>> - if (ret != -ENODEV)
>> - nouveau_fbcon_gpu_lockup(info);
>> - drm_fb_helper_cfb_fillrect(info, rect);
>> -}
>> -
>> -static void
>> -nouveau_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *image)
>> -{
>> - struct nouveau_fbdev *fbcon = info->par;
>> - struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev);
>> - struct nvif_device *device = &drm->client.device;
>> - int ret;
>> -
>> - if (info->...
2018 Dec 13
1
[PATCH] drm/virtio: switch to generic fbdev emulation
...ct(info, rect);
- virtio_gpu_dirty_update(&vfbdev->vgfb, true, rect->dx, rect->dy,
- rect->width, rect->height);
- schedule_delayed_work(&vfbdev->work, VIRTIO_GPU_FBCON_POLL_PERIOD);
-}
-
-static void virtio_gpu_3d_copyarea(struct fb_info *info,
- const struct fb_copyarea *area)
-{
- struct virtio_gpu_fbdev *vfbdev = info->par;
-
- drm_fb_helper_sys_copyarea(info, area);
- virtio_gpu_dirty_update(&vfbdev->vgfb, true, area->dx, area->dy,
- area->width, area->height);
- schedule_delayed_work(&vfbdev->work, VIRTIO_GPU_FBCON_POLL_PERIOD...
2020 Oct 29
4
[PATCH 1/3] fbcon: Disable accelerated scrolling
...in fbcon by hard-wiring p->scrollmode =
+SCROLL_REDRAW. There's a ton of code this will allow us to remove:
+- lots of code in fbcon.c
+- a bunch of the hooks in fbcon_ops, maybe the remaining hooks could be called
+ directly instead of the function table (with a switch on p->rotate)
+- fb_copyarea is unused after this, and can be deleted from all drivers
+
+Note that not all acceleration code can be deleted, since clearing and cursor
+support is still accelerated, which might be good candidates for further
+deletion projects.
+
+Contact: Daniel Vetter
+
+Level: Intermediate
+
idr_init_base(...