Re: [PATCH] modesetting: add tile property support (v2.1)

2015-04-06 Thread Chris Wilson
On Wed, Apr 01, 2015 at 10:31:43AM +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.
 
 v2.1: fix resetting tile property (Chris)
 
 Signed-off-by: Dave Airlie airl...@redhat.com
Reviewed-by: Chris Wilson ch...@chris-wilson.co.uk
-Chris

-- 
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] modesetting: add tile property support (v2.1)

2015-03-31 Thread Dave Airlie
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.

v2.1: fix resetting tile property (Chris)

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..81d3e26 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;
+struct xf86CrtcTileInfo tile_info, *set = NULL;
+
+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) {
+if (xf86OutputParseKMSTile(drmmode_output-tile_blob-data, 
drmmode_output-tile_blob-length, tile_info) == TRUE)
+set = tile_info;
+}
+xf86OutputSetTile(output, set);
+}
+
 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