diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2013-09-07 08:42:26 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2013-09-07 08:42:26 +0100 |
commit | 0c697aee9b3767be7d1e04e4e4f9d304f23b188a (patch) | |
tree | c509ab88dcb1ce9a44b6a94641ffe985b6030f37 /src/sna | |
parent | ea30967245707ca4825de154e589a83dc605dae0 (diff) |
Revert "sna: Add XMir support"
This reverts commit 42d94356f65972eb7fb8991234a4e9388c4c2031.
Ordered-by: The Management.
Diffstat (limited to 'src/sna')
-rw-r--r-- | src/sna/Makefile.am | 1 | ||||
-rw-r--r-- | src/sna/sna.h | 35 | ||||
-rw-r--r-- | src/sna/sna_dri.c | 14 | ||||
-rw-r--r-- | src/sna/sna_driver.c | 19 | ||||
-rw-r--r-- | src/sna/sna_xmir.c | 179 |
5 files changed, 7 insertions, 241 deletions
diff --git a/src/sna/Makefile.am b/src/sna/Makefile.am index 5cf1cbf0..030869de 100644 --- a/src/sna/Makefile.am +++ b/src/sna/Makefile.am @@ -76,7 +76,6 @@ libsna_la_SOURCES = \ sna_video_overlay.c \ sna_video_sprite.c \ sna_video_textured.c \ - sna_xmir.c \ gen2_render.c \ gen2_render.h \ gen3_render.c \ diff --git a/src/sna/sna.h b/src/sna/sna.h index a081c0e9..a4037c68 100644 --- a/src/sna/sna.h +++ b/src/sna/sna.h @@ -290,7 +290,6 @@ struct sna { EntityInfoPtr pEnt; struct pci_device *PciInfo; const struct intel_device_info *info; - xmir_screen *xmir; ScreenBlockHandlerProcPtr BlockHandler; ScreenWakeupHandlerProcPtr WakeupHandler; @@ -436,24 +435,14 @@ CARD32 sna_render_format_for_depth(int depth); void sna_debug_flush(struct sna *sna); static inline bool -get_window_deltas(PixmapPtr pixmap, int16_t *x, int16_t *y) -{ -#ifdef COMPOSITE - *x = -pixmap->screen_x; - *y = -pixmap->screen_y; - return pixmap->screen_x | pixmap->screen_y; -#else - *x = *y = 0; - return false; -#endif -} - -static inline bool get_drawable_deltas(DrawablePtr drawable, PixmapPtr pixmap, int16_t *x, int16_t *y) { #ifdef COMPOSITE - if (drawable->type == DRAWABLE_WINDOW) - return get_window_deltas(pixmap, x, y); + if (drawable->type == DRAWABLE_WINDOW) { + *x = -pixmap->screen_x; + *y = -pixmap->screen_y; + return pixmap->screen_x | pixmap->screen_y; + } #endif *x = *y = 0; return false; @@ -977,18 +966,4 @@ void sna_image_composite(pixman_op_t op, uint16_t width, uint16_t height); -/* sna_xmir.c */ - -#if XMIR -bool sna_xmir_create(struct sna *sna); -bool sna_xmir_pre_init(struct sna *sna); -void sna_xmir_init(struct sna *sna, ScreenPtr screen); -void sna_xmir_post_damage(struct sna *sna); -#else -inline static bool sna_xmir_create(struct sna *sna) { return true; } -inline static bool sna_xmir_pre_init(struct sna *sna) { return true; } -inline static void sna_xmir_init(struct sna *sna, ScreenPtr screen) { } -inline static void sna_xmir_post_damage(struct sna *sna) { } -#endif - #endif /* _SNA_H */ diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c index f3a5d9c0..25f66b31 100644 --- a/src/sna/sna_dri.c +++ b/src/sna/sna_dri.c @@ -2251,13 +2251,6 @@ out_complete: } #endif -#if DRI2INFOREC_VERSION >= 8 && XMIR -static int sna_dri_auth_magic2(ScreenPtr screen, uint32_t magic) -{ - return xmir_auth_drm_magic(to_sna_from_screen(screen)->xmir, magic); -} -#endif - static bool has_i830_dri(void) { return access(DRI_DRIVER_PATH "/i830_dri.so", R_OK) == 0; @@ -2333,13 +2326,6 @@ bool sna_dri_open(struct sna *sna, ScreenPtr screen) info.ReuseBufferNotify = NULL; #endif -#if DRI2INFOREC_VERSION >= 8 && XMIR - if (sna->xmir) { - info.version = 8; - info.AuthMagic2 = sna_dri_auth_magic2; - } -#endif - #if USE_ASYNC_SWAP info.version = 10; info.scheduleSwap0 = 1; diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c index 46249987..4da6cbb0 100644 --- a/src/sna/sna_driver.c +++ b/src/sna/sna_driver.c @@ -443,9 +443,6 @@ static Bool sna_pre_init(ScrnInfoPtr scrn, int flags) goto cleanup; } - if (!sna_xmir_create(sna)) - goto cleanup; - /* Sanity check */ if (hosted() && (sna->flags & SNA_IS_HOSTED) == 0) { xf86DrvMsg(scrn->scrnIndex, X_ERROR, @@ -453,14 +450,9 @@ static Bool sna_pre_init(ScrnInfoPtr scrn, int flags) goto cleanup; } - if (sna->xmir) { - /* XXX query depth from xmir */ + preferred_depth = sna->info->gen < 030 ? 15 : 24; + if (!fb_supports_depth(fd, preferred_depth)) preferred_depth = 24; - } else { - preferred_depth = sna->info->gen < 030 ? 15 : 24; - if (!fb_supports_depth(fd, preferred_depth)) - preferred_depth = 24; - } if (!xf86SetDepthBpp(scrn, preferred_depth, 0, 0, Support32bppFb | @@ -497,9 +489,6 @@ static Bool sna_pre_init(ScrnInfoPtr scrn, int flags) intel_detect_chipset(scrn, sna->pEnt, sna->PciInfo); - if (!sna_xmir_pre_init(sna)) - goto cleanup; - kgem_init(&sna->kgem, fd, sna->PciInfo, sna->info->gen); if (xf86ReturnOptValBool(sna->Options, OPTION_ACCEL_DISABLE, FALSE) || !sna_option_cast_to_bool(sna, OPTION_ACCEL_METHOD, TRUE)) { @@ -585,8 +574,6 @@ sna_block_handler(BLOCKHANDLER_ARGS_DECL) if (*tv == NULL || ((*tv)->tv_usec | (*tv)->tv_sec)) sna_accel_block_handler(sna, tv); - - sna_xmir_post_damage(sna); } static void @@ -936,8 +923,6 @@ sna_screen_init(SCREEN_INIT_ARGS_DECL) if (!miDCInitialize(screen, xf86GetPointerScreenFuncs())) return FALSE; - sna_xmir_init(sna, screen); /* after DirectCursor is initialised */ - if ((sna->flags & SNA_IS_HOSTED) == 0 && xf86_cursors_init(screen, SNA_CURSOR_X, SNA_CURSOR_Y, HARDWARE_CURSOR_TRUECOLOR_AT_8BPP | diff --git a/src/sna/sna_xmir.c b/src/sna/sna_xmir.c deleted file mode 100644 index ddce984c..00000000 --- a/src/sna/sna_xmir.c +++ /dev/null @@ -1,179 +0,0 @@ -/*************************************************************************** - - Copyright 2013 Intel Corporation. All Rights Reserved. - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sub license, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice (including the - next paragraph) shall be included in all copies or substantial portions - of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - IN NO EVENT SHALL INTEL, AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR - THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - **************************************************************************/ - -#include <assert.h> - -#include "sna.h" - -#if XMIR - -/* Theory of Operation - * ------------------- - * - * 1. Clients render to their pixmaps and Windows aggregating damage. - * 2. Before blocking, we walk the list of dirty Windows and submit - * any damage to Mir. This consumes the xfer buffer. - * 3. Clients continue to render and we accumulate damage. However, - * as there is now no xfer buffer free, damage accumulates. - * 4. Mir reports that its exchange has complete and gives us a new - * transport buffer. - * 5. Before going to sleep, we iterate over dirty Windows and copy - * their damage into the xfer buffer and send back to Mir. - * - * Clients render uninterrupted, but we only send damage to Mir once - * every frame. - */ - -#define FORCE_FULL_REDRAW 0 - -static void -sna_xmir_copy_to_mir(xmir_window *xmir_win, RegionPtr region) -{ - PixmapPtr src = get_window_pixmap(xmir_window_to_windowptr(xmir_win)); - struct sna *sna = to_sna_from_pixmap(src); - const BoxRec *dst_box = xmir_window_get_drawable_region(xmir_win); - struct sna_pixmap *priv; - struct kgem_bo *bo; - BoxRec *box; - const int pitch = xmir_window_get_stride(xmir_win); - int16_t sx, sy, dx, dy; - int n; - -#if FORCE_FULL_REDRAW - RegionRec whole = { { 0, 0, src->drawable.width, src->drawable.height } }; - region = &whole; -#endif - - assert(region); - - DBG(("%s: copying region (%d, %d), (%d, %d) x %d, dst box=(%d, %d), (%d, %d), pitch=%d, fd=%d\n", - __FUNCTION__, - region->extents.x1, region->extents.y1, - region->extents.x2, region->extents.y2, - REGION_NUM_RECTS(region), - dst_box->x1, dst_box->y1, - dst_box->x2, dst_box->y2, - pitch, xmir_window_get_fd(xmir_win))); - - box = REGION_RECTS(region); - n = REGION_NUM_RECTS(region); - if (n == 0) - return; - - /* XXX size is bogus, but only used for sanity checks */ - bo = kgem_create_for_prime(&sna->kgem, - xmir_window_get_fd(xmir_win), - pitch * (dst_box->y2 - dst_box->y1)); - if (bo == NULL) - return; - - bo->pitch = pitch; - bo->scanout = true; /* presume the worst (almost always true) */ - - if (get_window_deltas(src, &sx, &sy)) - RegionTranslate(region, sx, sy); - - dx = sx + dst_box->x1; - dy = sy + dst_box->y1; - - priv = sna_pixmap_move_area_to_gpu(src, ®ion->extents, MOVE_READ); - if (priv && sna->render.copy_boxes(sna, GXcopy, - src, priv->gpu_bo, 0, 0, - src, bo, -dx, -dy, - box, n, COPY_LAST)) { - kgem_submit(&sna->kgem); - n = 0; - } else { - void *dst = kgem_bo_map__gtt(&sna->kgem, bo); - if (dst && sna_drawable_move_region_to_cpu(&src->drawable, - region, MOVE_READ)) { - kgem_bo_sync__gtt(&sna->kgem, bo); - do { - memcpy_blt(src->devPrivate.ptr, dst, - src->drawable.bitsPerPixel, - src->devKind, bo->pitch, - box->x1, box->y1, - box->x1 - dx, box->y1 - dy, - box->x2 - box->x1, - box->y2 - box->y1); - } while (--n); - } - } - - if (sx | sy) - RegionTranslate(region, -sx, -sy); - - if (n == 0) - xmir_submit_rendering_for_window(xmir_win, region); - - bo->scanout = false; /* but don't confuse our caching! */ - kgem_bo_destroy(&sna->kgem, bo); -} - -static xmir_driver sna_xmir_driver = { - XMIR_DRIVER_VERSION, - sna_xmir_copy_to_mir -}; - -bool sna_xmir_create(struct sna *sna) -{ - if (!xorgMir) - return true; - - sna->xmir = xmir_screen_create(sna->scrn); - if (sna->xmir == NULL) - return false; - - sna->flags |= SNA_IS_HOSTED; - return true; -} - -bool sna_xmir_pre_init(struct sna *sna) -{ - if (sna->xmir == NULL) - return true; - - return xmir_screen_pre_init(sna->scrn, sna->xmir, &sna_xmir_driver); -} - -void sna_xmir_init(struct sna *sna, ScreenPtr screen) -{ - if (sna->xmir == NULL) - return; - - xmir_screen_init(screen, sna->xmir); -} - -void sna_xmir_post_damage(struct sna *sna) -{ - if (sna->xmir == NULL) - return; - - xmir_screen_for_each_damaged_window(sna->xmir, - sna_xmir_copy_to_mir); -} - -#endif |