configure.ac | 2 - src/Makefile.am | 8 +++---- src/drmmode_display.c | 54 ++++++++++++-------------------------------------- src/drmmode_display.h | 10 +++++---- src/via_driver.c | 17 +-------------- src/via_driver.h | 3 +- src/via_ums.c | 12 ++++++++++- src/via_xv.c | 34 +++++++++++++++++++++++++++++++ 8 files changed, 74 insertions(+), 66 deletions(-)
New commits: commit 2f097aff0919b38e4d9b648d5bd6c17fd8e6d4df Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Aug 17 08:59:40 2020 -0700 Version bumped to 0.6.303 Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/configure.ac b/configure.ac index 8d7038b..3b3e081 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-openchrome], - [0.6.302], + [0.6.303], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome], [xf86-video-openchrome]) commit f4371b46c69adf4d953e5823c888260d2a9ec07f Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Aug 17 08:59:31 2020 -0700 Rename via_kms.h to drmmode_display.h Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/Makefile.am b/src/Makefile.am index 87e3d3c..d8cbe11 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -82,11 +82,11 @@ openchrome_drv_la_SOURCES = \ if DRI openchrome_drv_la_SOURCES += \ drmmode_display.c \ + drmmode_display.h \ via_dri.c \ via_dri.h \ via_drm.h \ via_drmclient.h \ - via_kms.h \ via_xvmc.c \ via_xvmc.h \ drm_fourcc.h \ @@ -94,11 +94,11 @@ openchrome_drv_la_SOURCES += \ else EXTRA_DIST += \ drmmode_display.c \ + drmmode_display.h \ via_dri.c \ via_dri.h \ via_drm.h \ via_drmclient.h \ - via_kms.h \ via_xvmc.c \ via_xvmc.h \ drm_fourcc.h \ diff --git a/src/via_kms.h b/src/drmmode_display.h similarity index 100% rename from src/via_kms.h rename to src/drmmode_display.h diff --git a/src/via_driver.h b/src/via_driver.h index 7d188bd..3d9ddb1 100644 --- a/src/via_driver.h +++ b/src/via_driver.h @@ -70,7 +70,7 @@ #include "via_memmgr.h" #include "via_regs.h" -#include "via_kms.h" +#include "drmmode_display.h" #include "via_ums.h" #include "via_dmabuffer.h" #include "via_3d.h" commit 1903ee1daf7db495bf99dedf69bf7c2d997dd1da Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Aug 17 08:59:20 2020 -0700 Rename via_kms.c to drmmode_display.c Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/Makefile.am b/src/Makefile.am index 3db8adc..87e3d3c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -81,24 +81,24 @@ openchrome_drv_la_SOURCES = \ if DRI openchrome_drv_la_SOURCES += \ + drmmode_display.c \ via_dri.c \ via_dri.h \ via_drm.h \ via_drmclient.h \ via_kms.h \ - via_kms.c \ via_xvmc.c \ via_xvmc.h \ drm_fourcc.h \ openchrome_drm.h else EXTRA_DIST += \ + drmmode_display.c \ via_dri.c \ via_dri.h \ via_drm.h \ via_drmclient.h \ via_kms.h \ - via_kms.c \ via_xvmc.c \ via_xvmc.h \ drm_fourcc.h \ diff --git a/src/via_kms.c b/src/drmmode_display.c similarity index 100% rename from src/via_kms.c rename to src/drmmode_display.c commit 4940b2321dc8f39692d88b65e9b570403966609c Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Aug 17 08:59:00 2020 -0700 Revert KMSCrtcInit() back to drmmode_pre_init() Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/via_driver.c b/src/via_driver.c index 94237d1..0faa349 100644 --- a/src/via_driver.c +++ b/src/via_driver.c @@ -1145,7 +1145,7 @@ VIAPreInit(ScrnInfoPtr pScrn, int flags) } if (pVia->KMS) { - if (!KMSCrtcInit(pScrn, &pVia->drmmode)) { + if (!drmmode_pre_init(pScrn, &pVia->drmmode)) { goto fail; } } else { diff --git a/src/via_kms.c b/src/via_kms.c index 8bde1e9..59bb43e 100644 --- a/src/via_kms.c +++ b/src/via_kms.c @@ -764,13 +764,11 @@ xf86CrtcConfigFuncsRec via_xf86crtc_config_funcs = { via_xf86crtc_resize }; -Bool KMSCrtcInit(ScrnInfoPtr pScrn, drmmode_ptr drmmode) +Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode) { int i; Bool ret; - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "KMSCrtcInit\n")); - xf86CrtcConfigInit(pScrn, &via_xf86crtc_config_funcs); drmmode->scrn = pScrn; diff --git a/src/via_kms.h b/src/via_kms.h index c63d499..4c2f322 100644 --- a/src/via_kms.h +++ b/src/via_kms.h @@ -84,7 +84,10 @@ typedef struct { } drmmode_output_private_rec, *drmmode_output_private_ptr; #endif -extern Bool KMSCrtcInit(ScrnInfoPtr pScrn, drmmode_ptr drmmode); + +extern Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode); + extern void drmmode_uevent_init(ScrnInfoPtr scrn, drmmode_ptr drmmode); extern void drmmode_uevent_fini(ScrnInfoPtr scrn, drmmode_ptr drmmode); + #endif commit 1bd183b9d7527fb395778ccc6aa8af765e594e69 Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Aug 17 08:58:49 2020 -0700 Handle CRTC and display initialization calls outside of VIAPreInit() Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/via_driver.c b/src/via_driver.c index b767a5f..94237d1 100644 --- a/src/via_driver.c +++ b/src/via_driver.c @@ -677,7 +677,7 @@ viaConvertDepthToBpp(int bpp, int depth) return bppSize; } -static Bool +Bool via_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height) { xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); @@ -826,11 +826,6 @@ fail: return FALSE; } -static const -xf86CrtcConfigFuncsRec via_xf86crtc_config_funcs = { - via_xf86crtc_resize -}; - static Bool VIAPreInit(ScrnInfoPtr pScrn, int flags) { @@ -1149,9 +1144,6 @@ VIAPreInit(ScrnInfoPtr pScrn, int flags) } } - /* CRTC handling */ - xf86CrtcConfigInit(pScrn, &via_xf86crtc_config_funcs); - if (pVia->KMS) { if (!KMSCrtcInit(pScrn, &pVia->drmmode)) { goto fail; @@ -1162,11 +1154,6 @@ VIAPreInit(ScrnInfoPtr pScrn, int flags) } } - if (!xf86InitialConfiguration(pScrn, TRUE)) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Initial configuration failed\n"); - goto fail; - } - if (!pScrn->modes) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes found\n"); goto fail; diff --git a/src/via_driver.h b/src/via_driver.h index 011ede7..7d188bd 100644 --- a/src/via_driver.h +++ b/src/via_driver.h @@ -359,6 +359,7 @@ typedef struct const OptionInfoRec *VIAAvailableOptions(int chipid, int busid); void viaSetupDefaultOptions(ScrnInfoPtr pScrn); void viaProcessOptions(ScrnInfoPtr pScrn); +Bool via_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height); /* In via_exa.c. */ int viaEXAOffscreenAlloc(ScrnInfoPtr pScrn, diff --git a/src/via_kms.c b/src/via_kms.c index fb44808..8bde1e9 100644 --- a/src/via_kms.c +++ b/src/via_kms.c @@ -759,12 +759,20 @@ drmmode_clones_init(ScrnInfoPtr scrn, drmmode_ptr drmmode) } } +static const +xf86CrtcConfigFuncsRec via_xf86crtc_config_funcs = { + via_xf86crtc_resize +}; + Bool KMSCrtcInit(ScrnInfoPtr pScrn, drmmode_ptr drmmode) { int i; + Bool ret; DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "KMSCrtcInit\n")); + xf86CrtcConfigInit(pScrn, &via_xf86crtc_config_funcs); + drmmode->scrn = pScrn; drmmode->mode_res = drmModeGetResources(drmmode->fd); if (!drmmode->mode_res) @@ -780,7 +788,9 @@ Bool KMSCrtcInit(ScrnInfoPtr pScrn, drmmode_ptr drmmode) /* workout clones */ drmmode_clones_init(pScrn, drmmode); - return TRUE; + ret = xf86InitialConfiguration(pScrn, TRUE); + + return ret; } #ifdef HAVE_LIBUDEV diff --git a/src/via_ums.c b/src/via_ums.c index 309d1c3..006425e 100644 --- a/src/via_ums.c +++ b/src/via_ums.c @@ -29,6 +29,11 @@ #include "globals.h" #include "via_driver.h" +static const +xf86CrtcConfigFuncsRec via_xf86crtc_config_funcs = { + via_xf86crtc_resize +}; + static void viaMMIOEnable(ScrnInfoPtr pScrn) { @@ -1217,6 +1222,7 @@ viaUMSCrtcInit(ScrnInfoPtr pScrn) int max_pitch, max_height; xf86CrtcPtr iga1, iga2; uint32_t i; + Bool ret; vgaHWSave(pScrn, &hwp->SavedReg, VGA_SR_ALL); @@ -1427,6 +1433,8 @@ viaUMSCrtcInit(ScrnInfoPtr pScrn) clockRanges->doubleScanAllowed = FALSE; pScrn->clockRanges = clockRanges; + xf86CrtcConfigInit(pScrn, &via_xf86crtc_config_funcs); + /* * Now handle the outputs */ @@ -1491,5 +1499,7 @@ viaUMSCrtcInit(ScrnInfoPtr pScrn) viaInitDisplay(pScrn); - return TRUE; + ret = xf86InitialConfiguration(pScrn, TRUE); + + return ret; } commit ca78e9a517a0a5d77734946acf22e1a717ef323c Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Aug 17 08:58:32 2020 -0700 Use HAVE_LIBUDEV instead of HAVE_UDEV It probably was a programming mistake. Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/via_kms.c b/src/via_kms.c index a9e0286..fb44808 100644 --- a/src/via_kms.c +++ b/src/via_kms.c @@ -783,7 +783,7 @@ Bool KMSCrtcInit(ScrnInfoPtr pScrn, drmmode_ptr drmmode) return TRUE; } -#ifdef HAVE_UDEV +#ifdef HAVE_LIBUDEV static void drmmode_handle_uevents(int fd, void *closure) { @@ -802,7 +802,7 @@ drmmode_handle_uevents(int fd, void *closure) void drmmode_uevent_init(ScrnInfoPtr scrn, drmmode_ptr drmmode) { -#ifdef HAVE_UDEV +#ifdef HAVE_LIBUDEV struct udev_monitor *mon; struct udev *u; @@ -832,7 +832,7 @@ void drmmode_uevent_init(ScrnInfoPtr scrn, drmmode_ptr drmmode) void drmmode_uevent_fini(ScrnInfoPtr scrn, drmmode_ptr drmmode) { -#ifdef HAVE_UDEV +#ifdef HAVE_LIBUDEV if (drmmode->uevent_handler) { struct udev *u = udev_monitor_get_udev(drmmode->uevent_monitor); diff --git a/src/via_kms.h b/src/via_kms.h index 2c93843..c63d499 100644 --- a/src/via_kms.h +++ b/src/via_kms.h @@ -30,7 +30,7 @@ #ifdef HAVE_DRI #include "xf86drmMode.h" #endif -#ifdef HAVE_UDEV +#ifdef HAVE_LIBUDEV #include "libudev.h" #endif @@ -43,7 +43,7 @@ typedef struct { drmEventContext event_context; #endif ScrnInfoPtr scrn; -#ifdef HAVE_UDEV +#ifdef HAVE_LIBUDEV struct udev_monitor *uevent_monitor; InputHandlerProc uevent_handler; #endif commit d269cab9669b062954c7671f85d55608598d4887 Author: Kevin Brace <kevinbr...@gmx.com> Date: Mon Aug 17 08:58:15 2020 -0700 Move window_belongs_to_crtc() from via_kms.c to via_xv.c Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/src/via_kms.c b/src/via_kms.c index f414656..a9e0286 100644 --- a/src/via_kms.c +++ b/src/via_kms.c @@ -50,40 +50,6 @@ #include <X11/extensions/dpms.h> #endif -xf86CrtcPtr -window_belongs_to_crtc(ScrnInfoPtr pScrn, int x, int y, int w, int h) -{ - xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); - int largest = 0, area = 0, i; - BoxRec crtc_area, overlap; - xf86CrtcPtr best = NULL; - - for (i = 0; i < xf86_config->num_crtc; i++) { - xf86CrtcPtr crtc = xf86_config->crtc[i]; - - if (crtc->enabled) { - crtc_area.x1 = crtc->x; - crtc_area.x2 = crtc->x + xf86ModeWidth(&crtc->mode, crtc->rotation); - crtc_area.y1 = crtc->y; - crtc_area.y2 = crtc->y + xf86ModeHeight(&crtc->mode, crtc->rotation); - overlap.x1 = crtc_area.x1 > x ? crtc_area.x1 : x; - overlap.x2 = crtc_area.x2 < x + w ? crtc_area.x2 : x + w; - overlap.y1 = crtc_area.y1 > y ? crtc_area.y1 : y; - overlap.y2 = crtc_area.y2 < y ? crtc_area.y2 : y + h; - - if (overlap.x1 >= overlap.x2 || overlap.y1 >= overlap.y2) - overlap.x1 = overlap.x2 = overlap.y1 = overlap.y2 = 0; - - area = (overlap.x2 - overlap.x1) * (overlap.y2 - overlap.y1); - if (area > largest) { - area = largest; - best = crtc; - } - } - } - return best; -} - static void drmmode_ConvertFromKMode(ScrnInfoPtr pScrn, drmModeModeInfo *kmode, DisplayModePtr mode) diff --git a/src/via_kms.h b/src/via_kms.h index 2085f62..2c93843 100644 --- a/src/via_kms.h +++ b/src/via_kms.h @@ -84,7 +84,6 @@ typedef struct { } drmmode_output_private_rec, *drmmode_output_private_ptr; #endif -extern xf86CrtcPtr window_belongs_to_crtc(ScrnInfoPtr pScrn, int x, int y, int w, int h); extern Bool KMSCrtcInit(ScrnInfoPtr pScrn, drmmode_ptr drmmode); extern void drmmode_uevent_init(ScrnInfoPtr scrn, drmmode_ptr drmmode); extern void drmmode_uevent_fini(ScrnInfoPtr scrn, drmmode_ptr drmmode); diff --git a/src/via_xv.c b/src/via_xv.c index 8d2823a..bccce55 100644 --- a/src/via_xv.c +++ b/src/via_xv.c @@ -255,6 +255,40 @@ static unsigned numAdaptPort[XV_ADAPT_NUM] = { 1 }; * F U N C T I O N */ +static xf86CrtcPtr +window_belongs_to_crtc(ScrnInfoPtr pScrn, int x, int y, int w, int h) +{ + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); + int largest = 0, area = 0, i; + BoxRec crtc_area, overlap; + xf86CrtcPtr best = NULL; + + for (i = 0; i < xf86_config->num_crtc; i++) { + xf86CrtcPtr crtc = xf86_config->crtc[i]; + + if (crtc->enabled) { + crtc_area.x1 = crtc->x; + crtc_area.x2 = crtc->x + xf86ModeWidth(&crtc->mode, crtc->rotation); + crtc_area.y1 = crtc->y; + crtc_area.y2 = crtc->y + xf86ModeHeight(&crtc->mode, crtc->rotation); + overlap.x1 = crtc_area.x1 > x ? crtc_area.x1 : x; + overlap.x2 = crtc_area.x2 < x + w ? crtc_area.x2 : x + w; + overlap.y1 = crtc_area.y1 > y ? crtc_area.y1 : y; + overlap.y2 = crtc_area.y2 < y ? crtc_area.y2 : y + h; + + if (overlap.x1 >= overlap.x2 || overlap.y1 >= overlap.y2) + overlap.x1 = overlap.x2 = overlap.y1 = overlap.y2 = 0; + + area = (overlap.x2 - overlap.x1) * (overlap.y2 - overlap.y1); + if (area > largest) { + area = largest; + best = crtc; + } + } + } + return best; +} + /* * Decide if the mode support video overlay. This depends on the bandwidth * of the mode and the type of RAM available. _______________________________________________ openchrome-devel mailing list openchrome-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/openchrome-devel