* [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS
@ 2019-12-04 13:24 Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 1/7] drm/udl: Remove unused statistics counters Thomas Zimmermann
` (8 more replies)
0 siblings, 9 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2019-12-04 13:24 UTC (permalink / raw)
To: airlied, daniel, sam, kraxel, emil.velikov, noralf, zboszor
Cc: Thomas Zimmermann, dri-devel
Udl's damage-handling code requires clean up before switching the driver
to simple-pipe helpers. Patches 1, 2 and 7 remove unused state variables
and statistics. Patches 3 to 5 reorganizes the damage handler to be more
readable. Patch 6 moves dma-buf begin/end calls into the damage handler,
so it will run during page-flip andmodeset operations.
The patchset has been tested by running fbdev console emulation, X11, and
Weston with a DisplayLink adapter.
Thomas Zimmermann (7):
drm/udl: Remove unused statistics counters
drm/udl: Don't track number of identical and sent pixels per line
drm/udl: Vmap framebuffer after all tests succeeded in damage handling
drm/udl: Move clip-rectangle code out of udl_handle_damage()
drm/udl: Move log-cpp code out of udl_damage_handler()
drm/udl: Begin/end access to imported buffers in damage-handler
drm/udl: Remove field lost_pixels from struct udl_device
drivers/gpu/drm/udl/udl_drv.h | 8 +-
drivers/gpu/drm/udl/udl_fb.c | 129 +++++++++++++++--------------
drivers/gpu/drm/udl/udl_main.c | 3 -
drivers/gpu/drm/udl/udl_transfer.c | 12 ++-
4 files changed, 72 insertions(+), 80 deletions(-)
--
2.23.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/7] drm/udl: Remove unused statistics counters
2019-12-04 13:24 [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Thomas Zimmermann
@ 2019-12-04 13:24 ` Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 2/7] drm/udl: Don't track number of identical and sent pixels per line Thomas Zimmermann
` (7 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2019-12-04 13:24 UTC (permalink / raw)
To: airlied, daniel, sam, kraxel, emil.velikov, noralf, zboszor
Cc: Thomas Zimmermann, dri-devel
None of the udl driver's statistics counters is used anywhere. Remove
them.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/udl/udl_drv.h | 4 ----
drivers/gpu/drm/udl/udl_fb.c | 14 +-------------
2 files changed, 1 insertion(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index 66cbe04f832a..42426407c318 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -66,10 +66,6 @@ struct udl_device {
char mode_buf[1024];
uint32_t mode_buf_len;
- atomic_t bytes_rendered; /* raw pixel-bytes driver asked to render */
- atomic_t bytes_identical; /* saved effort with backbuffer comparison */
- atomic_t bytes_sent; /* to usb, after compression including overhead */
- atomic_t cpu_kcycles_used; /* transpired during pixel processing */
};
#define to_udl(x) container_of(x, struct udl_device, drm)
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index c1996ac73a1f..bc033779f6e4 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -68,7 +68,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
struct udl_device *udl = to_udl(dev);
int i, ret;
char *cmd;
- cycles_t start_cycles, end_cycles;
int bytes_sent = 0;
int bytes_identical = 0;
struct urb *urb;
@@ -105,8 +104,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
goto err_drm_gem_shmem_vunmap;
}
- start_cycles = get_cycles();
-
urb = udl_get_urb(dev);
if (!urb)
goto out;
@@ -120,7 +117,7 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
&cmd, byte_offset, dev_byte_offset,
width << log_bpp,
&bytes_identical, &bytes_sent))
- goto error;
+ goto out;
}
if (cmd > (char *) urb->transfer_buffer) {
@@ -134,15 +131,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
} else
udl_urb_completion(urb);
-error:
- atomic_add(bytes_sent, &udl->bytes_sent);
- atomic_add(bytes_identical, &udl->bytes_identical);
- atomic_add((width * height) << log_bpp, &udl->bytes_rendered);
- end_cycles = get_cycles();
- atomic_add(((unsigned int) ((end_cycles - start_cycles)
- >> 10)), /* Kcycles */
- &udl->cpu_kcycles_used);
-
out:
drm_gem_shmem_vunmap(fb->obj[0], vaddr);
--
2.23.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/7] drm/udl: Don't track number of identical and sent pixels per line
2019-12-04 13:24 [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 1/7] drm/udl: Remove unused statistics counters Thomas Zimmermann
@ 2019-12-04 13:24 ` Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 3/7] drm/udl: Vmap framebuffer after all tests succeeded in damage handling Thomas Zimmermann
` (6 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2019-12-04 13:24 UTC (permalink / raw)
To: airlied, daniel, sam, kraxel, emil.velikov, noralf, zboszor
Cc: Thomas Zimmermann, dri-devel
A call to udl_render_hline() returns the number of identical and
sent pixels. None of these values is used. Remove the parameters.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/udl/udl_drv.h | 3 +--
drivers/gpu/drm/udl/udl_fb.c | 6 +-----
drivers/gpu/drm/udl/udl_transfer.c | 4 +---
3 files changed, 3 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index 42426407c318..d732c9e47812 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -93,8 +93,7 @@ udl_fb_user_fb_create(struct drm_device *dev,
int udl_render_hline(struct drm_device *dev, int log_bpp, struct urb **urb_ptr,
const char *front, char **urb_buf_ptr,
- u32 byte_offset, u32 device_byte_offset, u32 byte_width,
- int *ident_ptr, int *sent_ptr);
+ u32 byte_offset, u32 device_byte_offset, u32 byte_width);
struct drm_gem_object *udl_driver_gem_create_object(struct drm_device *dev,
size_t size);
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index bc033779f6e4..ed6d9476b25b 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -68,8 +68,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
struct udl_device *udl = to_udl(dev);
int i, ret;
char *cmd;
- int bytes_sent = 0;
- int bytes_identical = 0;
struct urb *urb;
int aligned_x;
int log_bpp;
@@ -115,8 +113,7 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
const int dev_byte_offset = (fb->width * i + x) << log_bpp;
if (udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
&cmd, byte_offset, dev_byte_offset,
- width << log_bpp,
- &bytes_identical, &bytes_sent))
+ width << log_bpp))
goto out;
}
@@ -127,7 +124,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
*cmd++ = 0xAF;
len = cmd - (char *) urb->transfer_buffer;
ret = udl_submit_urb(dev, urb, len);
- bytes_sent += len;
} else
udl_urb_completion(urb);
diff --git a/drivers/gpu/drm/udl/udl_transfer.c b/drivers/gpu/drm/udl/udl_transfer.c
index 1973a4c1e358..686358d1f669 100644
--- a/drivers/gpu/drm/udl/udl_transfer.c
+++ b/drivers/gpu/drm/udl/udl_transfer.c
@@ -212,8 +212,7 @@ static void udl_compress_hline16(
int udl_render_hline(struct drm_device *dev, int log_bpp, struct urb **urb_ptr,
const char *front, char **urb_buf_ptr,
u32 byte_offset, u32 device_byte_offset,
- u32 byte_width,
- int *ident_ptr, int *sent_ptr)
+ u32 byte_width)
{
const u8 *line_start, *line_end, *next_pixel;
u32 base16 = 0 + (device_byte_offset >> log_bpp) * 2;
@@ -237,7 +236,6 @@ int udl_render_hline(struct drm_device *dev, int log_bpp, struct urb **urb_ptr,
int len = cmd - (u8 *) urb->transfer_buffer;
if (udl_submit_urb(dev, urb, len))
return 1; /* lost pixels is set */
- *sent_ptr += len;
urb = udl_get_urb(dev);
if (!urb)
return 1; /* lost_pixels is set */
--
2.23.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 3/7] drm/udl: Vmap framebuffer after all tests succeeded in damage handling
2019-12-04 13:24 [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 1/7] drm/udl: Remove unused statistics counters Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 2/7] drm/udl: Don't track number of identical and sent pixels per line Thomas Zimmermann
@ 2019-12-04 13:24 ` Thomas Zimmermann
2019-12-04 14:25 ` Sam Ravnborg
2019-12-04 13:24 ` [PATCH 4/7] drm/udl: Move clip-rectangle code out of udl_handle_damage() Thomas Zimmermann
` (5 subsequent siblings)
8 siblings, 1 reply; 13+ messages in thread
From: Thomas Zimmermann @ 2019-12-04 13:24 UTC (permalink / raw)
To: airlied, daniel, sam, kraxel, emil.velikov, noralf, zboszor
Cc: Thomas Zimmermann, dri-devel
We now do the fast tests before the potentially expensive vmap operation.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/udl/udl_fb.c | 19 +++++++------------
drivers/gpu/drm/udl/udl_transfer.c | 1 -
2 files changed, 7 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index ed6d9476b25b..dd7ba7f63214 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -85,12 +85,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
}
spin_unlock(&udl->active_fb_16_lock);
- vaddr = drm_gem_shmem_vmap(fb->obj[0]);
- if (IS_ERR(vaddr)) {
- DRM_ERROR("failed to vmap fb\n");
- return 0;
- }
-
aligned_x = DL_ALIGN_DOWN(x, sizeof(unsigned long));
width = DL_ALIGN_UP(width + (x-aligned_x), sizeof(unsigned long));
x = aligned_x;
@@ -98,8 +92,13 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
if ((width <= 0) ||
(x + width > fb->width) ||
(y + height > fb->height)) {
- ret = -EINVAL;
- goto err_drm_gem_shmem_vunmap;
+ return -EINVAL;
+ }
+
+ vaddr = drm_gem_shmem_vmap(fb->obj[0]);
+ if (IS_ERR(vaddr)) {
+ DRM_ERROR("failed to vmap fb\n");
+ return 0;
}
urb = udl_get_urb(dev);
@@ -131,10 +130,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
drm_gem_shmem_vunmap(fb->obj[0], vaddr);
return 0;
-
-err_drm_gem_shmem_vunmap:
- drm_gem_shmem_vunmap(fb->obj[0], vaddr);
- return ret;
}
static int udl_user_framebuffer_dirty(struct drm_framebuffer *fb,
diff --git a/drivers/gpu/drm/udl/udl_transfer.c b/drivers/gpu/drm/udl/udl_transfer.c
index 686358d1f669..5fae48723286 100644
--- a/drivers/gpu/drm/udl/udl_transfer.c
+++ b/drivers/gpu/drm/udl/udl_transfer.c
@@ -249,4 +249,3 @@ int udl_render_hline(struct drm_device *dev, int log_bpp, struct urb **urb_ptr,
return 0;
}
-
--
2.23.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 4/7] drm/udl: Move clip-rectangle code out of udl_handle_damage()
2019-12-04 13:24 [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Thomas Zimmermann
` (2 preceding siblings ...)
2019-12-04 13:24 ` [PATCH 3/7] drm/udl: Vmap framebuffer after all tests succeeded in damage handling Thomas Zimmermann
@ 2019-12-04 13:24 ` Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 5/7] drm/udl: Move log-cpp code out of udl_damage_handler() Thomas Zimmermann
` (4 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2019-12-04 13:24 UTC (permalink / raw)
To: airlied, daniel, sam, kraxel, emil.velikov, noralf, zboszor
Cc: Thomas Zimmermann, dri-devel
Computing the clip rectable in a separate helper function makes the
damage-handler code more readable.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/udl/udl_fb.c | 48 ++++++++++++++++++++++++------------
1 file changed, 32 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index dd7ba7f63214..cc2a09a995b8 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -20,9 +20,6 @@
#include "udl_drv.h"
-#define DL_ALIGN_UP(x, a) ALIGN(x, a)
-#define DL_ALIGN_DOWN(x, a) ALIGN_DOWN(x, a)
-
/** Read the red component (0..255) of a 32 bpp colour. */
#define DLO_RGB_GETRED(col) (uint8_t)((col) & 0xFF)
@@ -61,6 +58,28 @@ static uint16_t rgb16(uint32_t col)
}
#endif
+static int udl_aligned_damage_clip(struct drm_rect *clip, int x, int y,
+ int width, int height)
+{
+ int x1, x2;
+
+ if (WARN_ON_ONCE(x < 0) ||
+ WARN_ON_ONCE(y < 0) ||
+ WARN_ON_ONCE(width < 0) ||
+ WARN_ON_ONCE(height < 0))
+ return -EINVAL;
+
+ x1 = ALIGN_DOWN(x, sizeof(unsigned long));
+ x2 = ALIGN(width + (x - x1), sizeof(unsigned long)) + x1;
+
+ clip->x1 = x1;
+ clip->y1 = y;
+ clip->x2 = x2;
+ clip->y2 = y + height;
+
+ return 0;
+}
+
int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
int width, int height)
{
@@ -69,7 +88,7 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
int i, ret;
char *cmd;
struct urb *urb;
- int aligned_x;
+ struct drm_rect clip;
int log_bpp;
void *vaddr;
@@ -85,15 +104,11 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
}
spin_unlock(&udl->active_fb_16_lock);
- aligned_x = DL_ALIGN_DOWN(x, sizeof(unsigned long));
- width = DL_ALIGN_UP(width + (x-aligned_x), sizeof(unsigned long));
- x = aligned_x;
-
- if ((width <= 0) ||
- (x + width > fb->width) ||
- (y + height > fb->height)) {
+ ret = udl_aligned_damage_clip(&clip, x, y, width, height);
+ if (ret)
+ return ret;
+ else if ((clip.x2 > fb->width) || (clip.y2 > fb->height))
return -EINVAL;
- }
vaddr = drm_gem_shmem_vmap(fb->obj[0]);
if (IS_ERR(vaddr)) {
@@ -106,13 +121,14 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
goto out;
cmd = urb->transfer_buffer;
- for (i = y; i < y + height ; i++) {
+ for (i = clip.y1; i < clip.y2; i++) {
const int line_offset = fb->pitches[0] * i;
- const int byte_offset = line_offset + (x << log_bpp);
- const int dev_byte_offset = (fb->width * i + x) << log_bpp;
+ const int byte_offset = line_offset + (clip.x1 << log_bpp);
+ const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp;
+ const int byte_width = (clip.x2 - clip.x1) << log_bpp;
if (udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
&cmd, byte_offset, dev_byte_offset,
- width << log_bpp))
+ byte_width))
goto out;
}
--
2.23.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 5/7] drm/udl: Move log-cpp code out of udl_damage_handler()
2019-12-04 13:24 [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Thomas Zimmermann
` (3 preceding siblings ...)
2019-12-04 13:24 ` [PATCH 4/7] drm/udl: Move clip-rectangle code out of udl_handle_damage() Thomas Zimmermann
@ 2019-12-04 13:24 ` Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 6/7] drm/udl: Begin/end access to imported buffers in damage-handler Thomas Zimmermann
` (3 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2019-12-04 13:24 UTC (permalink / raw)
To: airlied, daniel, sam, kraxel, emil.velikov, noralf, zboszor
Cc: Thomas Zimmermann, dri-devel
Computing the cpp value's logarithm in a separate helper function makes
the damage-handler code more readable.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/udl/udl_fb.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index cc2a09a995b8..482786eeea6c 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -58,6 +58,13 @@ static uint16_t rgb16(uint32_t col)
}
#endif
+static long udl_log_cpp(unsigned int cpp)
+{
+ if (WARN_ON(!is_power_of_2(cpp)))
+ return -EINVAL;
+ return __ffs(cpp);
+}
+
static int udl_aligned_damage_clip(struct drm_rect *clip, int x, int y,
int width, int height)
{
@@ -92,11 +99,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
int log_bpp;
void *vaddr;
- if (WARN_ON(!is_power_of_2(fb->format->cpp[0])))
- return -EINVAL;
-
- log_bpp = __ffs(fb->format->cpp[0]);
-
spin_lock(&udl->active_fb_16_lock);
if (udl->active_fb_16 != fb) {
spin_unlock(&udl->active_fb_16_lock);
@@ -104,6 +106,11 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
}
spin_unlock(&udl->active_fb_16_lock);
+ ret = udl_log_cpp(fb->format->cpp[0]);
+ if (ret < 0)
+ return ret;
+ log_bpp = ret;
+
ret = udl_aligned_damage_clip(&clip, x, y, width, height);
if (ret)
return ret;
--
2.23.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 6/7] drm/udl: Begin/end access to imported buffers in damage-handler
2019-12-04 13:24 [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Thomas Zimmermann
` (4 preceding siblings ...)
2019-12-04 13:24 ` [PATCH 5/7] drm/udl: Move log-cpp code out of udl_damage_handler() Thomas Zimmermann
@ 2019-12-04 13:24 ` Thomas Zimmermann
2019-12-05 13:25 ` Emil Velikov
2019-12-04 13:24 ` [PATCH 7/7] drm/udl: Remove field lost_pixels from struct udl_device Thomas Zimmermann
` (2 subsequent siblings)
8 siblings, 1 reply; 13+ messages in thread
From: Thomas Zimmermann @ 2019-12-04 13:24 UTC (permalink / raw)
To: airlied, daniel, sam, kraxel, emil.velikov, noralf, zboszor
Cc: Thomas Zimmermann, dri-devel
The damage-handler code now invokes dma_buf_{begin,end}_access()
for imported buffers. These calls were missing from the page-flip
and modesetting code paths.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/udl/udl_fb.c | 38 ++++++++++++++++++------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index 482786eeea6c..7d184ff96a1f 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -92,6 +92,7 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
{
struct drm_device *dev = fb->dev;
struct udl_device *udl = to_udl(dev);
+ struct dma_buf_attachment *import_attach = fb->obj[0]->import_attach;
int i, ret;
char *cmd;
struct urb *urb;
@@ -117,15 +118,22 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
else if ((clip.x2 > fb->width) || (clip.y2 > fb->height))
return -EINVAL;
+ if (import_attach) {
+ ret = dma_buf_begin_cpu_access(import_attach->dmabuf,
+ DMA_FROM_DEVICE);
+ if (ret)
+ return ret;
+ }
+
vaddr = drm_gem_shmem_vmap(fb->obj[0]);
if (IS_ERR(vaddr)) {
DRM_ERROR("failed to vmap fb\n");
- return 0;
+ goto out_dma_buf_end_cpu_access;
}
urb = udl_get_urb(dev);
if (!urb)
- goto out;
+ goto out_drm_gem_shmem_vunmap;
cmd = urb->transfer_buffer;
for (i = clip.y1; i < clip.y2; i++) {
@@ -136,7 +144,7 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
if (udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
&cmd, byte_offset, dev_byte_offset,
byte_width))
- goto out;
+ goto out_drm_gem_shmem_vunmap;
}
if (cmd > (char *) urb->transfer_buffer) {
@@ -149,10 +157,16 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
} else
udl_urb_completion(urb);
-out:
+ ret = 0;
+
+out_drm_gem_shmem_vunmap:
drm_gem_shmem_vunmap(fb->obj[0], vaddr);
+out_dma_buf_end_cpu_access:
+ if (import_attach)
+ ret = dma_buf_end_cpu_access(import_attach->dmabuf,
+ DMA_FROM_DEVICE);
- return 0;
+ return ret;
}
static int udl_user_framebuffer_dirty(struct drm_framebuffer *fb,
@@ -162,7 +176,6 @@ static int udl_user_framebuffer_dirty(struct drm_framebuffer *fb,
unsigned num_clips)
{
struct udl_device *udl = fb->dev->dev_private;
- struct dma_buf_attachment *import_attach;
int i;
int ret = 0;
@@ -175,15 +188,6 @@ static int udl_user_framebuffer_dirty(struct drm_framebuffer *fb,
}
spin_unlock(&udl->active_fb_16_lock);
- import_attach = fb->obj[0]->import_attach;
-
- if (import_attach) {
- ret = dma_buf_begin_cpu_access(import_attach->dmabuf,
- DMA_FROM_DEVICE);
- if (ret)
- goto unlock;
- }
-
for (i = 0; i < num_clips; i++) {
ret = udl_handle_damage(fb, clips[i].x1, clips[i].y1,
clips[i].x2 - clips[i].x1,
@@ -192,10 +196,6 @@ static int udl_user_framebuffer_dirty(struct drm_framebuffer *fb,
break;
}
- if (import_attach)
- ret = dma_buf_end_cpu_access(import_attach->dmabuf,
- DMA_FROM_DEVICE);
-
unlock:
drm_modeset_unlock_all(fb->dev);
--
2.23.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 7/7] drm/udl: Remove field lost_pixels from struct udl_device
2019-12-04 13:24 [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Thomas Zimmermann
` (5 preceding siblings ...)
2019-12-04 13:24 ` [PATCH 6/7] drm/udl: Begin/end access to imported buffers in damage-handler Thomas Zimmermann
@ 2019-12-04 13:24 ` Thomas Zimmermann
2019-12-05 8:15 ` [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Gerd Hoffmann
2019-12-05 13:31 ` Emil Velikov
8 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2019-12-04 13:24 UTC (permalink / raw)
To: airlied, daniel, sam, kraxel, emil.velikov, noralf, zboszor
Cc: Thomas Zimmermann, dri-devel
The field lost_pixels in struct udl_device was supposed to signal an
error during USB transfers of the framebuffer data. The driver would
have to schedule a re-transfer at a later point. This code was never
implemented. Remove lost_pixels and return regular error codes instead.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/udl/udl_drv.h | 1 -
drivers/gpu/drm/udl/udl_fb.c | 7 ++++---
drivers/gpu/drm/udl/udl_main.c | 3 ---
drivers/gpu/drm/udl/udl_transfer.c | 7 ++++---
4 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index d732c9e47812..4de00bddef39 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -62,7 +62,6 @@ struct udl_device {
int sku_pixel_limit;
struct urb_list urbs;
- atomic_t lost_pixels; /* 1 = a render op failed. Need screen refresh */
char mode_buf[1024];
uint32_t mode_buf_len;
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index 7d184ff96a1f..3c77e8e5e417 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -141,9 +141,10 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
const int byte_offset = line_offset + (clip.x1 << log_bpp);
const int dev_byte_offset = (fb->width * i + clip.x1) << log_bpp;
const int byte_width = (clip.x2 - clip.x1) << log_bpp;
- if (udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
- &cmd, byte_offset, dev_byte_offset,
- byte_width))
+ ret = udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
+ &cmd, byte_offset, dev_byte_offset,
+ byte_width);
+ if (ret)
goto out_drm_gem_shmem_vunmap;
}
diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
index a23218fc7d8e..ff3e98666e8c 100644
--- a/drivers/gpu/drm/udl/udl_main.c
+++ b/drivers/gpu/drm/udl/udl_main.c
@@ -140,7 +140,6 @@ void udl_urb_completion(struct urb *urb)
urb->status == -ESHUTDOWN)) {
DRM_ERROR("%s - nonzero write bulk status received: %d\n",
__func__, urb->status);
- atomic_set(&udl->lost_pixels, 1);
}
}
@@ -271,7 +270,6 @@ struct urb *udl_get_urb(struct drm_device *dev)
/* Wait for an in-flight buffer to complete and get re-queued */
ret = down_timeout(&udl->urbs.limit_sem, GET_URB_TIMEOUT);
if (ret) {
- atomic_set(&udl->lost_pixels, 1);
DRM_INFO("wait for urb interrupted: %x available: %d\n",
ret, udl->urbs.available);
goto error;
@@ -304,7 +302,6 @@ int udl_submit_urb(struct drm_device *dev, struct urb *urb, size_t len)
ret = usb_submit_urb(urb, GFP_ATOMIC);
if (ret) {
udl_urb_completion(urb); /* because no one else will */
- atomic_set(&udl->lost_pixels, 1);
DRM_ERROR("usb_submit_urb error %x\n", ret);
}
return ret;
diff --git a/drivers/gpu/drm/udl/udl_transfer.c b/drivers/gpu/drm/udl/udl_transfer.c
index 5fae48723286..971927669d6b 100644
--- a/drivers/gpu/drm/udl/udl_transfer.c
+++ b/drivers/gpu/drm/udl/udl_transfer.c
@@ -234,11 +234,12 @@ int udl_render_hline(struct drm_device *dev, int log_bpp, struct urb **urb_ptr,
if (cmd >= cmd_end) {
int len = cmd - (u8 *) urb->transfer_buffer;
- if (udl_submit_urb(dev, urb, len))
- return 1; /* lost pixels is set */
+ int ret = udl_submit_urb(dev, urb, len);
+ if (ret)
+ return ret;
urb = udl_get_urb(dev);
if (!urb)
- return 1; /* lost_pixels is set */
+ return -EAGAIN;
*urb_ptr = urb;
cmd = urb->transfer_buffer;
cmd_end = &cmd[urb->transfer_buffer_length];
--
2.23.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 3/7] drm/udl: Vmap framebuffer after all tests succeeded in damage handling
2019-12-04 13:24 ` [PATCH 3/7] drm/udl: Vmap framebuffer after all tests succeeded in damage handling Thomas Zimmermann
@ 2019-12-04 14:25 ` Sam Ravnborg
2019-12-04 15:54 ` Thomas Zimmermann
0 siblings, 1 reply; 13+ messages in thread
From: Sam Ravnborg @ 2019-12-04 14:25 UTC (permalink / raw)
To: Thomas Zimmermann; +Cc: dri-devel, kraxel, airlied, emil.velikov
Hi Thomas.
I did a casual browse of the patches.
Looks like some nice cleanup.
On Wed, Dec 04, 2019 at 02:24:26PM +0100, Thomas Zimmermann wrote:
> We now do the fast tests before the potentially expensive vmap operation.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/gpu/drm/udl/udl_fb.c | 19 +++++++------------
> drivers/gpu/drm/udl/udl_transfer.c | 1 -
> 2 files changed, 7 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
> index ed6d9476b25b..dd7ba7f63214 100644
> --- a/drivers/gpu/drm/udl/udl_fb.c
> +++ b/drivers/gpu/drm/udl/udl_fb.c
> @@ -85,12 +85,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
> }
> spin_unlock(&udl->active_fb_16_lock);
>
> - vaddr = drm_gem_shmem_vmap(fb->obj[0]);
> - if (IS_ERR(vaddr)) {
> - DRM_ERROR("failed to vmap fb\n");
> - return 0;
> - }
> -
> aligned_x = DL_ALIGN_DOWN(x, sizeof(unsigned long));
> width = DL_ALIGN_UP(width + (x-aligned_x), sizeof(unsigned long));
> x = aligned_x;
> @@ -98,8 +92,13 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
> if ((width <= 0) ||
> (x + width > fb->width) ||
> (y + height > fb->height)) {
> - ret = -EINVAL;
> - goto err_drm_gem_shmem_vunmap;
> + return -EINVAL;
> + }
> +
> + vaddr = drm_gem_shmem_vmap(fb->obj[0]);
> + if (IS_ERR(vaddr)) {
> + DRM_ERROR("failed to vmap fb\n");
> + return 0;
> }
>
> urb = udl_get_urb(dev);
> @@ -131,10 +130,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
> drm_gem_shmem_vunmap(fb->obj[0], vaddr);
>
> return 0;
> -
> -err_drm_gem_shmem_vunmap:
> - drm_gem_shmem_vunmap(fb->obj[0], vaddr);
> - return ret;
This label is reintroduced two patches later.
Is this on purpose it is gone and reintroduced?
Sam
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/7] drm/udl: Vmap framebuffer after all tests succeeded in damage handling
2019-12-04 14:25 ` Sam Ravnborg
@ 2019-12-04 15:54 ` Thomas Zimmermann
0 siblings, 0 replies; 13+ messages in thread
From: Thomas Zimmermann @ 2019-12-04 15:54 UTC (permalink / raw)
To: Sam Ravnborg; +Cc: airlied, kraxel, dri-devel, emil.velikov
[-- Attachment #1.1.1: Type: text/plain, Size: 2716 bytes --]
Hi Sam
Am 04.12.19 um 15:25 schrieb Sam Ravnborg:
> Hi Thomas.
>
> I did a casual browse of the patches.
> Looks like some nice cleanup.
>
> On Wed, Dec 04, 2019 at 02:24:26PM +0100, Thomas Zimmermann wrote:
>> We now do the fast tests before the potentially expensive vmap operation.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>> drivers/gpu/drm/udl/udl_fb.c | 19 +++++++------------
>> drivers/gpu/drm/udl/udl_transfer.c | 1 -
>> 2 files changed, 7 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
>> index ed6d9476b25b..dd7ba7f63214 100644
>> --- a/drivers/gpu/drm/udl/udl_fb.c
>> +++ b/drivers/gpu/drm/udl/udl_fb.c
>> @@ -85,12 +85,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
>> }
>> spin_unlock(&udl->active_fb_16_lock);
>>
>> - vaddr = drm_gem_shmem_vmap(fb->obj[0]);
>> - if (IS_ERR(vaddr)) {
>> - DRM_ERROR("failed to vmap fb\n");
>> - return 0;
>> - }
>> -
>> aligned_x = DL_ALIGN_DOWN(x, sizeof(unsigned long));
>> width = DL_ALIGN_UP(width + (x-aligned_x), sizeof(unsigned long));
>> x = aligned_x;
>> @@ -98,8 +92,13 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
>> if ((width <= 0) ||
>> (x + width > fb->width) ||
>> (y + height > fb->height)) {
>> - ret = -EINVAL;
>> - goto err_drm_gem_shmem_vunmap;
>> + return -EINVAL;
>> + }
>> +
>> + vaddr = drm_gem_shmem_vmap(fb->obj[0]);
>> + if (IS_ERR(vaddr)) {
>> + DRM_ERROR("failed to vmap fb\n");
>> + return 0;
>> }
>>
>> urb = udl_get_urb(dev);
>> @@ -131,10 +130,6 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
>> drm_gem_shmem_vunmap(fb->obj[0], vaddr);
>>
>> return 0;
>> -
>> -err_drm_gem_shmem_vunmap:
>> - drm_gem_shmem_vunmap(fb->obj[0], vaddr);
>> - return ret;
> This label is reintroduced two patches later.
> Is this on purpose it is gone and reintroduced?
This label is for rollback during error handling. The label in [6/7] is
called out_drm_gem_shmem_vunmap and it's part of the regular flow.
Admittedly, it's a bit unfortunate. OTOH the alternative is to add
dma-buf calls before moving around the vmap call. That seems like the
worse option.
Best regards
Thomas
>
> Sam
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS
2019-12-04 13:24 [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Thomas Zimmermann
` (6 preceding siblings ...)
2019-12-04 13:24 ` [PATCH 7/7] drm/udl: Remove field lost_pixels from struct udl_device Thomas Zimmermann
@ 2019-12-05 8:15 ` Gerd Hoffmann
2019-12-05 13:31 ` Emil Velikov
8 siblings, 0 replies; 13+ messages in thread
From: Gerd Hoffmann @ 2019-12-05 8:15 UTC (permalink / raw)
To: Thomas Zimmermann; +Cc: dri-devel, airlied, sam, emil.velikov
On Wed, Dec 04, 2019 at 02:24:23PM +0100, Thomas Zimmermann wrote:
> Udl's damage-handling code requires clean up before switching the driver
> to simple-pipe helpers. Patches 1, 2 and 7 remove unused state variables
> and statistics. Patches 3 to 5 reorganizes the damage handler to be more
> readable. Patch 6 moves dma-buf begin/end calls into the damage handler,
> so it will run during page-flip andmodeset operations.
Nice cleanups.
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
cheers,
Gerd
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 6/7] drm/udl: Begin/end access to imported buffers in damage-handler
2019-12-04 13:24 ` [PATCH 6/7] drm/udl: Begin/end access to imported buffers in damage-handler Thomas Zimmermann
@ 2019-12-05 13:25 ` Emil Velikov
0 siblings, 0 replies; 13+ messages in thread
From: Emil Velikov @ 2019-12-05 13:25 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: ML dri-devel, Gerd Hoffmann, Dave Airlie, Sam Ravnborg, Emil Velikov
On Wed, 4 Dec 2019 at 13:24, Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> The damage-handler code now invokes dma_buf_{begin,end}_access()
> for imported buffers. These calls were missing from the page-flip
> and modesetting code paths.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/gpu/drm/udl/udl_fb.c | 38 ++++++++++++++++++------------------
> 1 file changed, 19 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
> index 482786eeea6c..7d184ff96a1f 100644
> --- a/drivers/gpu/drm/udl/udl_fb.c
> +++ b/drivers/gpu/drm/udl/udl_fb.c
> @@ -92,6 +92,7 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
> {
> struct drm_device *dev = fb->dev;
> struct udl_device *udl = to_udl(dev);
> + struct dma_buf_attachment *import_attach = fb->obj[0]->import_attach;
> int i, ret;
> char *cmd;
> struct urb *urb;
> @@ -117,15 +118,22 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
> else if ((clip.x2 > fb->width) || (clip.y2 > fb->height))
> return -EINVAL;
>
> + if (import_attach) {
> + ret = dma_buf_begin_cpu_access(import_attach->dmabuf,
> + DMA_FROM_DEVICE);
> + if (ret)
> + return ret;
> + }
> +
> vaddr = drm_gem_shmem_vmap(fb->obj[0]);
> if (IS_ERR(vaddr)) {
> DRM_ERROR("failed to vmap fb\n");
> - return 0;
> + goto out_dma_buf_end_cpu_access;
> }
>
> urb = udl_get_urb(dev);
> if (!urb)
> - goto out;
> + goto out_drm_gem_shmem_vunmap;
> cmd = urb->transfer_buffer;
>
> for (i = clip.y1; i < clip.y2; i++) {
> @@ -136,7 +144,7 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
> if (udl_render_hline(dev, log_bpp, &urb, (char *)vaddr,
> &cmd, byte_offset, dev_byte_offset,
> byte_width))
> - goto out;
> + goto out_drm_gem_shmem_vunmap;
> }
>
> if (cmd > (char *) urb->transfer_buffer) {
> @@ -149,10 +157,16 @@ int udl_handle_damage(struct drm_framebuffer *fb, int x, int y,
> } else
> udl_urb_completion(urb);
>
> -out:
> + ret = 0;
> +
> +out_drm_gem_shmem_vunmap:
> drm_gem_shmem_vunmap(fb->obj[0], vaddr);
> +out_dma_buf_end_cpu_access:
> + if (import_attach)
> + ret = dma_buf_end_cpu_access(import_attach->dmabuf,
> + DMA_FROM_DEVICE);
>
> - return 0;
> + return ret;
Since you're touching the end_cpu_access call, we might as well
address the following bug. Namely:
Even though we get a failure from udl_render_hline() or otherwise, the
function return "OK" when end_cpu_access() is successful.
If you really want to, one can keep it separate (+ CC stable),
although it's fine to squash it here with a small note in the commit
message.
HTH
Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS
2019-12-04 13:24 [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Thomas Zimmermann
` (7 preceding siblings ...)
2019-12-05 8:15 ` [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Gerd Hoffmann
@ 2019-12-05 13:31 ` Emil Velikov
8 siblings, 0 replies; 13+ messages in thread
From: Emil Velikov @ 2019-12-05 13:31 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: ML dri-devel, Gerd Hoffmann, Dave Airlie, Sam Ravnborg, Emil Velikov
On Wed, 4 Dec 2019 at 13:24, Thomas Zimmermann <tzimmermann@suse.de> wrote:
>
> Udl's damage-handling code requires clean up before switching the driver
> to simple-pipe helpers. Patches 1, 2 and 7 remove unused state variables
> and statistics. Patches 3 to 5 reorganizes the damage handler to be more
> readable. Patch 6 moves dma-buf begin/end calls into the damage handler,
> so it will run during page-flip andmodeset operations.
>
> The patchset has been tested by running fbdev console emulation, X11, and
> Weston with a DisplayLink adapter.
>
> Thomas Zimmermann (7):
> drm/udl: Remove unused statistics counters
> drm/udl: Don't track number of identical and sent pixels per line
> drm/udl: Vmap framebuffer after all tests succeeded in damage handling
> drm/udl: Move clip-rectangle code out of udl_handle_damage()
> drm/udl: Move log-cpp code out of udl_damage_handler()
> drm/udl: Begin/end access to imported buffers in damage-handler
> drm/udl: Remove field lost_pixels from struct udl_device
>
There's a bugfix request in 6/7.
Regardless if you squash it in or choose to keep it separate, the series is:
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Thanks
Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2019-12-05 13:32 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-04 13:24 [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 1/7] drm/udl: Remove unused statistics counters Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 2/7] drm/udl: Don't track number of identical and sent pixels per line Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 3/7] drm/udl: Vmap framebuffer after all tests succeeded in damage handling Thomas Zimmermann
2019-12-04 14:25 ` Sam Ravnborg
2019-12-04 15:54 ` Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 4/7] drm/udl: Move clip-rectangle code out of udl_handle_damage() Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 5/7] drm/udl: Move log-cpp code out of udl_damage_handler() Thomas Zimmermann
2019-12-04 13:24 ` [PATCH 6/7] drm/udl: Begin/end access to imported buffers in damage-handler Thomas Zimmermann
2019-12-05 13:25 ` Emil Velikov
2019-12-04 13:24 ` [PATCH 7/7] drm/udl: Remove field lost_pixels from struct udl_device Thomas Zimmermann
2019-12-05 8:15 ` [PATCH 0/7] drm/udl: Prepare damage handler for simple-pipe KMS Gerd Hoffmann
2019-12-05 13:31 ` Emil Velikov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.