[PATCH xf86-video-ati 1/6] Create radeon_pixmap_clear helper
Michel Dänzer
michel at daenzer.net
Mon Aug 28 09:23:38 UTC 2017
From: Michel Dänzer <michel.daenzer at amd.com>
Preparatory, no functional change intended yet.
Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
---
src/drmmode_display.c | 16 +---------------
src/radeon_bo_helper.c | 21 +++++++++++++++++++++
src/radeon_bo_helper.h | 3 +++
3 files changed, 25 insertions(+), 15 deletions(-)
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index f926bc018..387d9e094 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -2211,9 +2211,6 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
uint32_t tiling_flags = 0, base_align;
PixmapPtr ppix = screen->GetScreenPixmap(screen);
void *fb_shadow;
- xRectangle rect;
- Bool force;
- GCPtr gc;
if (scrn->virtualX == width && scrn->virtualY == height)
return TRUE;
@@ -2356,18 +2353,7 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
goto fail;
}
- /* Clear new buffer */
- gc = GetScratchGC(ppix->drawable.depth, scrn->pScreen);
- force = info->accel_state->force;
- info->accel_state->force = TRUE;
- ValidateGC(&ppix->drawable, gc);
- rect.x = 0;
- rect.y = 0;
- rect.width = width;
- rect.height = height;
- (*gc->ops->PolyFillRect)(&ppix->drawable, gc, 1, &rect);
- FreeScratchGC(gc);
- info->accel_state->force = force;
+ radeon_pixmap_clear(ppix);
radeon_cs_flush_indirect(scrn);
radeon_bo_wait(info->front_bo);
diff --git a/src/radeon_bo_helper.c b/src/radeon_bo_helper.c
index a8ba76185..01b9e3df5 100644
--- a/src/radeon_bo_helper.c
+++ b/src/radeon_bo_helper.c
@@ -195,6 +195,27 @@ radeon_alloc_pixmap_bo(ScrnInfoPtr pScrn, int width, int height, int depth,
return bo;
}
+/* Clear the pixmap contents to black */
+void
+radeon_pixmap_clear(PixmapPtr pixmap)
+{
+ ScreenPtr screen = pixmap->drawable.pScreen;
+ RADEONInfoPtr info = RADEONPTR(xf86ScreenToScrn(screen));
+ GCPtr gc = GetScratchGC(pixmap->drawable.depth, screen);
+ Bool force = info->accel_state->force;
+ xRectangle rect;
+
+ info->accel_state->force = TRUE;
+ ValidateGC(&pixmap->drawable, gc);
+ rect.x = 0;
+ rect.y = 0;
+ rect.width = pixmap->drawable.width;
+ rect.height = pixmap->drawable.height;
+ gc->ops->PolyFillRect(&pixmap->drawable, gc, 1, &rect);
+ FreeScratchGC(gc);
+ info->accel_state->force = force;
+}
+
/* Get GEM handle for the pixmap */
Bool radeon_get_pixmap_handle(PixmapPtr pixmap, uint32_t *handle)
{
diff --git a/src/radeon_bo_helper.h b/src/radeon_bo_helper.h
index 771342502..e1856adb1 100644
--- a/src/radeon_bo_helper.h
+++ b/src/radeon_bo_helper.h
@@ -28,6 +28,9 @@ radeon_alloc_pixmap_bo(ScrnInfoPtr pScrn, int width, int height, int depth,
int usage_hint, int bitsPerPixel, int *new_pitch,
struct radeon_surface *new_surface, uint32_t *new_tiling);
+extern void
+radeon_pixmap_clear(PixmapPtr pixmap);
+
extern uint32_t
radeon_get_pixmap_tiling_flags(PixmapPtr pPix);
--
2.14.1
More information about the amd-gfx
mailing list