diff options
| author | Ray Strode <rstrode@redhat.com> | 2008-05-29 14:34:35 -0400 |
|---|---|---|
| committer | Ray Strode <rstrode@redhat.com> | 2008-05-29 14:34:35 -0400 |
| commit | 3493c2919fb84c201303459afc6c6bcdf855185b (patch) | |
| tree | f0e95aad03020e4df1a527a92b3a25684ea64a26 /src | |
| parent | 697dc98ebbff84354f90ad88ba9cab4c96b7c0bd (diff) | |
| download | plymouth-3493c2919fb84c201303459afc6c6bcdf855185b.tar.gz plymouth-3493c2919fb84c201303459afc6c6bcdf855185b.tar.xz plymouth-3493c2919fb84c201303459afc6c6bcdf855185b.zip | |
Add an optimization for full width fills on some hardware
If we know the rowstride is the same width as the frame buffer
then we can memcpy multiple rows at one time.
Diffstat (limited to 'src')
| -rw-r--r-- | src/libply/ply-frame-buffer.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/libply/ply-frame-buffer.c b/src/libply/ply-frame-buffer.c index 288f7e7..dbf6f11 100644 --- a/src/libply/ply-frame-buffer.c +++ b/src/libply/ply-frame-buffer.c @@ -188,6 +188,12 @@ flush_xrgb32 (ply_frame_buffer_t *buffer) dst = &buffer->map_address[(y1 * buffer->row_stride + x1) * 4]; src = (char *) &buffer->shadow_buffer[y1 * buffer->row_stride + x1]; + if (buffer->area_to_flush.width == buffer->row_stride) + { + memcpy (dst, src, buffer->area_to_flush.width * buffer->area_to_flush.height * 4); + return; + } + for (y = y1; y < y2; y++) { memcpy (dst, src, buffer->area_to_flush.width * 4); |
