Re: [PATCH 3/3] modesetting: add tile property support (v2)
On Tue, Mar 31, 2015 at 01:47:26PM +1000, Dave Airlie wrote: From: Dave Airlie airl...@redhat.com This adds tiling support to the server modesetting driver, it retrieves the tile info from the kernel and translates it into the server format and exposes the property. Signed-off-by: Dave Airlie airl...@redhat.com --- +if (drmmode_output-tile_blob) { +struct xf86CrtcTileInfo tile_info; + +if (xf86OutputParseKMSTile(drmmode_output-tile_blob-data, drmmode_output-tile_blob-length, tile_info) == TRUE) +xf86OutputSetTile(output, tile_info); +} How do we clear the previous tile? struct xf86CrtcTileInfo tile_info; memset(tile_info, 0, sizeof(tile_info)); if (drmmode_output-tile_blob) xf86OutputParseKMSTile(drmmode_output-tile_blob-data, drmmode_output-tile_blob-length, tile_info); xf86OutputSetTile(output, tile_info); -- Chris Wilson, Intel Open Source Technology Centre ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH 3/3] modesetting: add tile property support (v2)
On Tue, Mar 31, 2015 at 10:07:53AM +0100, Chris Wilson wrote: On Tue, Mar 31, 2015 at 01:47:26PM +1000, Dave Airlie wrote: From: Dave Airlie airl...@redhat.com This adds tiling support to the server modesetting driver, it retrieves the tile info from the kernel and translates it into the server format and exposes the property. Signed-off-by: Dave Airlie airl...@redhat.com --- +if (drmmode_output-tile_blob) { +struct xf86CrtcTileInfo tile_info; + +if (xf86OutputParseKMSTile(drmmode_output-tile_blob-data, drmmode_output-tile_blob-length, tile_info) == TRUE) +xf86OutputSetTile(output, tile_info); +} How do we clear the previous tile? struct xf86CrtcTileInfo tile_info; memset(tile_info, 0, sizeof(tile_info)); if (drmmode_output-tile_blob) xf86OutputParseKMSTile(drmmode_output-tile_blob-data, drmmode_output-tile_blob-length, tile_info); xf86OutputSetTile(output, tile_info); Or maybe: struct xf86CrtcTileInfo tile_info, *set = NULL; if (drmmode_output-tile_blob xf86OutputParseKMSTile(drmmode_output-tile_blob-data, drmmode_output-tile_blob-length, tile_info)) set = tile_info; xf86OutputSetTile(output, set); -- Chris Wilson, Intel Open Source Technology Centre ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
[PATCH 3/3] modesetting: add tile property support (v2)
From: Dave Airlie airl...@redhat.com This adds tiling support to the server modesetting driver, it retrieves the tile info from the kernel and translates it into the server format and exposes the property. Signed-off-by: Dave Airlie airl...@redhat.com --- hw/xfree86/drivers/modesetting/drmmode_display.c | 42 hw/xfree86/drivers/modesetting/drmmode_display.h | 1 + 2 files changed, 43 insertions(+) diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c index c7cb453..f12a446 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.c +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c @@ -749,6 +749,46 @@ drmmode_output_mode_valid(xf86OutputPtr output, DisplayModePtr pModes) return MODE_OK; } +static void +drmmode_output_attach_tile(xf86OutputPtr output) +{ +drmmode_output_private_ptr drmmode_output = output-driver_private; +drmModeConnectorPtr koutput = drmmode_output-mode_output; +drmmode_ptr drmmode = drmmode_output-drmmode; +int i; + +if (!koutput) { +xf86OutputSetTile(output, NULL); +return; +} + +/* look for a TILE property */ +for (i = 0; i koutput-count_props; i++) { +drmModePropertyPtr props; +props = drmModeGetProperty(drmmode-fd, koutput-props[i]); +if (!props) +continue; + +if (!(props-flags DRM_MODE_PROP_BLOB)) { +drmModeFreeProperty(props); +continue; +} + +if (!strcmp(props-name, TILE)) { +drmModeFreePropertyBlob(drmmode_output-tile_blob); +drmmode_output-tile_blob = +drmModeGetPropertyBlob(drmmode-fd, koutput-prop_values[i]); +} +drmModeFreeProperty(props); +} +if (drmmode_output-tile_blob) { +struct xf86CrtcTileInfo tile_info; + +if (xf86OutputParseKMSTile(drmmode_output-tile_blob-data, drmmode_output-tile_blob-length, tile_info) == TRUE) +xf86OutputSetTile(output, tile_info); +} +} + static Bool has_panel_fitter(xf86OutputPtr output) { @@ -857,6 +897,8 @@ drmmode_output_get_modes(xf86OutputPtr output) } xf86OutputSetEDID(output, mon); +drmmode_output_attach_tile(output); + /* modes should already be available */ for (i = 0; i koutput-count_modes; i++) { Mode = xnfalloc(sizeof(DisplayModeRec)); diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.h b/hw/xfree86/drivers/modesetting/drmmode_display.h index 769842d..746692b 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.h +++ b/hw/xfree86/drivers/modesetting/drmmode_display.h @@ -121,6 +121,7 @@ typedef struct { drmModeConnectorPtr mode_output; drmModeEncoderPtr *mode_encoders; drmModePropertyBlobPtr edid_blob; +drmModePropertyBlobPtr tile_blob; int dpms_enum_id; int num_props; drmmode_prop_ptr props; -- 2.3.3 ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel