summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2017-08-29 16:46:33 +0900
committerMichel Dänzer <michel.daenzer@amd.com>2017-08-29 16:46:33 +0900
commit1afd4a526c97e77ec882988e35d4977880b9d16c (patch)
tree5493dd3114bfe655cfba565a8d8a56db4c497ff5 /src
parent0de05767adb79d417284dae83e9a77857633fd80 (diff)
Create amdgpu_pixmap_clear helper
Preparatory, no functional change intended yet. (Ported from radeon commit 3f6210ca2c8ef60d59efc8139151d3b9838bb875) Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'src')
-rw-r--r--src/amdgpu_bo_helper.c20
-rw-r--r--src/amdgpu_bo_helper.h2
-rw-r--r--src/drmmode_display.c14
3 files changed, 23 insertions, 13 deletions
diff --git a/src/amdgpu_bo_helper.c b/src/amdgpu_bo_helper.c
index 7acd005..ee52e0c 100644
--- a/src/amdgpu_bo_helper.c
+++ b/src/amdgpu_bo_helper.c
@@ -120,6 +120,26 @@ struct amdgpu_buffer *amdgpu_alloc_pixmap_bo(ScrnInfoPtr pScrn, int width,
return pixmap_buffer;
}
+/* Clear the pixmap contents to black */
+void
+amdgpu_pixmap_clear(PixmapPtr pixmap)
+{
+ ScreenPtr screen = pixmap->drawable.pScreen;
+ AMDGPUInfoPtr info = AMDGPUPTR(xf86ScreenToScrn(screen));
+ GCPtr gc = GetScratchGC(pixmap->drawable.depth, screen);
+ xRectangle rect;
+
+ ValidateGC(&pixmap->drawable, gc);
+ rect.x = 0;
+ rect.y = 0;
+ rect.width = pixmap->drawable.width;
+ rect.height = pixmap->drawable.height;
+ info->force_accel = TRUE;
+ gc->ops->PolyFillRect(&pixmap->drawable, gc, 1, &rect);
+ info->force_accel = FALSE;
+ FreeScratchGC(gc);
+}
+
Bool amdgpu_bo_get_handle(struct amdgpu_buffer *bo, uint32_t *handle)
{
if (bo->flags & AMDGPU_BO_FLAGS_GBM) {
diff --git a/src/amdgpu_bo_helper.h b/src/amdgpu_bo_helper.h
index 26fca16..4f6b628 100644
--- a/src/amdgpu_bo_helper.h
+++ b/src/amdgpu_bo_helper.h
@@ -29,6 +29,8 @@ extern struct amdgpu_buffer *amdgpu_alloc_pixmap_bo(ScrnInfoPtr pScrn, int width
int height, int depth, int usage_hint,
int bitsPerPixel, int *new_pitch);
+extern void amdgpu_pixmap_clear(PixmapPtr pixmap);
+
extern Bool amdgpu_bo_get_handle(struct amdgpu_buffer *bo, uint32_t *handle);
extern uint64_t amdgpu_pixmap_get_tiling_info(PixmapPtr pixmap);
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 17efde8..285eb0a 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -2116,8 +2116,6 @@ static Bool drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height)
PixmapPtr ppix = screen->GetScreenPixmap(screen);
void *fb_shadow;
int hint = 0;
- xRectangle rect;
- GCPtr gc;
if (scrn->virtualX == width && scrn->virtualY == height)
return TRUE;
@@ -2181,17 +2179,7 @@ static Bool drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height)
goto fail;
}
- /* Clear new buffer */
- gc = GetScratchGC(ppix->drawable.depth, scrn->pScreen);
- ValidateGC(&ppix->drawable, gc);
- rect.x = 0;
- rect.y = 0;
- rect.width = width;
- rect.height = height;
- info->force_accel = TRUE;
- (*gc->ops->PolyFillRect)(&ppix->drawable, gc, 1, &rect);
- info->force_accel = FALSE;
- FreeScratchGC(gc);
+ amdgpu_pixmap_clear(ppix);
amdgpu_glamor_finish(scrn);
for (i = 0; i < xf86_config->num_crtc; i++) {