[Bug 60879] X11 can't start with acceleration enabled

2013-03-22 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=60879

--- Comment #16 from Hristo Venev mustrum...@gmail.com ---
Created attachment 76921
  -- https://bugs.freedesktop.org/attachment.cgi?id=76921action=edit
Screenshots with and without glamor

X11 doesn't render properly. The pixels seem to be shuffled. Maybe a shader
doesn't write where it's supposed to?

There is no kernel output caused by this.

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 60879] X11 can't start with acceleration enabled

2013-03-22 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=60879

--- Comment #17 from Alex Deucher ag...@yahoo.com ---
(In reply to comment #16)
 Created attachment 76921 [details]
 Screenshots with and without glamor
 
 X11 doesn't render properly. The pixels seem to be shuffled. Maybe a shader
 doesn't write where it's supposed to?

Looks like the tiling configuration is wrong on your system.

-- 
You are receiving this mail because:
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v3 0/2] Enhance EDID quirks to allow forcing a mode

2013-03-22 Thread Dylan Semler
Changes in this version
 * Uses drm_cvt_mode() instead of drm_gtf_mode() to build modeline
 * Adds bool to specify reduced blanking to edid_quirk_force_mode
 * Removes preferred bit from all other modes

There is at least one monitor that doesn't report its native resolution
in its EDID block.  This enhancement extends the EDID quirk logic to
make monitors like this just work.

The first patch in this series sets up a new quirk list where monitors'
correct width, height, refresh rate, and reduced blanking parameters are
specified.  When a matching monitor is attached the full mode is
calculated with drm_cvt_mode() and added to the connector.  The
DRM_MODE_TYPE_PREFERRED bit is set on the new mode and unset from all
other modes.

The first patch also defines a new quirk bit: EDID_QUIRK_FORCE_MODE.
This bit needs to be set for the new quirk list discribed above to be
checked.

The second patch adds the offending monitor to the quirk lists.

Dylan Semler (2):
  drm: Enhance EDID quirks to explicitly set a mode
  drm: Add EDID force quirk for MMT Monitor2Go HD+

 drivers/gpu/drm/drm_edid.c | 83 ++
 1 file changed, 83 insertions(+)

-- 
1.7.11.7

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v3 1/2] drm: Enhance EDID quirks to explicitly set a mode

2013-03-22 Thread Dylan Semler
There is at least one monitor that doesn't report its native resolution
in its EDID block.  This enhancement extends the EDID quirk logic to
make monitors like this just work.

This patch sets up a new quirk list where monitors' correct width,
height, refresh rate, and reduced blanking parameters are specified.
When a matching monitor is attached the full mode is calculated with
drm_cvt_mode() and added to the connector.  The DRM_MODE_TYPE_PREFERRED
bit is set on the new mode and unset from all other modes.

The patch also defines a new quirk bit: EDID_QUIRK_FORCE_MODE.  This
bit needs to be set for the new quirk list discribed above to be
checked.

Signed-off-by: Dylan Semler dylan.sem...@gmail.com
---
 drivers/gpu/drm/drm_edid.c | 78 ++
 1 file changed, 78 insertions(+)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index c194f4e..38b8641 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -68,6 +68,8 @@
 #define EDID_QUIRK_DETAILED_SYNC_PP(1  6)
 /* Force reduced-blanking timings for detailed modes */
 #define EDID_QUIRK_FORCE_REDUCED_BLANKING  (1  7)
+/* Force specific mode for monitors that don't report correct EDIDs */
+#define EDID_QUIRK_FORCE_MODE  (1  8)
 
 struct detailed_mode_closure {
struct drm_connector *connector;
@@ -127,6 +129,16 @@ static struct edid_quirk {
{ VSC, 5020, EDID_QUIRK_FORCE_REDUCED_BLANKING },
 };
 
+static struct edid_quirk_force_mode {
+   char vendor[4];
+   int product_id;
+   int hdisplay;
+   int vdisplay;
+   int vrefresh;
+   bool reduced;
+} edid_quirk_force_mode_list[] = {
+};
+
 /*
  * Autogenerated from the DMT spec.
  * This table is copied from xfree86/modes/xf86EdidModes.c.
@@ -2219,6 +2231,70 @@ add_detailed_modes(struct drm_connector *connector, 
struct edid *edid,
return closure.modes;
 }
 
+/* Add an explicit mode based on a quirk
+ */
+static int
+do_force_quirk_modes(struct drm_connector *connector, int hdisplay,
+int vdisplay, int vrefresh, bool reduced)
+{
+   struct drm_display_mode *mode, *t, *cur_mode;
+   struct drm_device *dev = connector-dev;
+   int num_modes = 0;
+
+   /* sanity check display parameters */
+   if (hdisplay  0)
+   return 0;
+   if (vdisplay  0)
+   return 0;
+   if (vrefresh  0)
+   return 0;
+
+   /* loop through the probed modes and clear the preferred bit */
+   list_for_each_entry_safe(cur_mode, t, connector-probed_modes, head)
+   cur_mode-type = ~DRM_MODE_TYPE_PREFERRED;
+
+   mode = drm_cvt_mode(dev, hdisplay, vdisplay, vrefresh, reduced, 0, 0);
+
+   if (mode) {
+   mode-type |= DRM_MODE_TYPE_PREFERRED;
+   drm_mode_probed_add(connector, mode);
+   num_modes++;
+   }
+   return num_modes;
+}
+
+/*
+ * add_force_quirk_modes - Add modes based on monitor's EDID quirks
+ * @connector: attached connector
+ * @edid: EDID block to scan
+ * @quirks: quirks to apply
+ *
+ * At least one monitor doesn't report its native resolution in its EDID block.
+ * Here we add the native mode according to this quirk
+ */
+static int
+add_force_quirk_modes(struct drm_connector *connector, struct edid *edid,
+ u32 quirks)
+{
+   struct edid_quirk_force_mode *quirk_mode;
+   int i, num_modes = 0;
+
+   for (i = 0; i  ARRAY_SIZE(edid_quirk_force_mode_list); i++) {
+   quirk_mode = edid_quirk_force_mode_list[i];
+
+   if (edid_vendor(edid, quirk_mode-vendor) 
+   (EDID_PRODUCT_ID(edid) == quirk_mode-product_id)) {
+   num_modes = do_force_quirk_modes(connector,
+   quirk_mode-hdisplay,
+   quirk_mode-vdisplay,
+   quirk_mode-vrefresh,
+   quirk_mode-reduced);
+   }
+   }
+   return num_modes;
+
+}
+
 #define HDMI_IDENTIFIER 0x000C03
 #define AUDIO_BLOCK0x01
 #define VIDEO_BLOCK 0x02
@@ -2803,6 +2879,8 @@ int drm_add_edid_modes(struct drm_connector *connector, 
struct edid *edid)
 
if (quirks  (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75))
edid_fixup_preferred(connector, quirks);
+   if (quirks  EDID_QUIRK_FORCE_MODE)
+   num_modes += add_force_quirk_modes(connector, edid, quirks);
 
drm_add_display_info(edid, connector-display_info);
 
-- 
1.7.11.7

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v3 2/2] drm: Add EDID force quirk for MMT Monitor2Go HD+

2013-03-22 Thread Dylan Semler
Set the new EDID_QUIRK_FORCE_MODE bit for the MMT Monitor2Go HD+ monitor
and add it to the edid_quirk_force_mode_list.

Signed-off-by: Dylan Semler dylan.sem...@gmail.com
---
 drivers/gpu/drm/drm_edid.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 38b8641..2f30be4 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -109,6 +109,9 @@ static struct edid_quirk {
{ FCM, 13600, EDID_QUIRK_PREFER_LARGE_75 |
  EDID_QUIRK_DETAILED_IN_CM },
 
+   /* Mobile Monitor Technologies LLC, Monitor2Go HD+ */
+   { LLP, 0x4c54, EDID_QUIRK_FORCE_MODE},
+
/* LG Philips LCD LP154W01-A5 */
{ LPL, 0, EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE },
{ LPL, 0x2a00, EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE },
@@ -137,6 +140,8 @@ static struct edid_quirk_force_mode {
int vrefresh;
bool reduced;
 } edid_quirk_force_mode_list[] = {
+   /* Mobile Monitor Technologies LLC, Monitor2Go HD+ */
+   { LLP, 0x4c54, 1600, 900, 60, 1 },
 };
 
 /*
-- 
1.7.11.7

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


<    1   2