[PATCH 0/7] handle detailed timing operation

2008-12-26 Thread Ma Ling
Hi FengGuan,

Thanks  for your feedback,  based on which I have updated the patchs.
 
[PATCH 1/7] Includes some new structures and defined MACRO in edid.h.
[PATCH 2/7] implement detailed timing unified interface in interpret_edid.c
[PATCH 3/7] implement detailed timing operation in interpret_edid.c
[PATCH 4/7] handle detailed timing operation in xf86EdidModes.c
[PATCH 5/7] handle detailed timing operation in xf86Crtc.c
[PATCH 6/7] handle detailed timing operation in xf86Configure.c
[PATCH 7/7] handle detailed timing operation in print_edid.c

Any comments are welcome !

Thanks
Ma Ling 

___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

[PATCH 1/7] Includes some new structures and defined MACRO in edid.h

2008-12-26 Thread Ma Ling
defined corresponding structure and MACRO for detailed timing operation

---
 hw/xfree86/ddc/edid.h |   76 +
 1 files changed, 76 insertions(+), 0 deletions(-)

diff --git a/hw/xfree86/ddc/edid.h b/hw/xfree86/ddc/edid.h
index 31bc7c1..bb5616f 100644
--- a/hw/xfree86/ddc/edid.h
+++ b/hw/xfree86/ddc/edid.h
@@ -553,4 +553,80 @@ typedef struct {
 
 extern _X_EXPORT xf86MonPtr ConfiguredMonitor;
 
+#define CEA_EXT   0x02
+#define VTB_EXT   0x10
+#define DI_EXT0x40
+#define LS_EXT0x50
+#define MI_EXT0x60
+
+#define CEA_EXT_MIN_DATA_OFFSET 4
+#define CEA_EXT_MAX_DATA_OFFSET 127
+#define CEA_EXT_DET_TIMING_NUM 6
+
+#define EXT_TAG 0
+#define EXT_REV 1
+
+struct cea_video_blk {
+  Uchar video_code; 
+};
+
+struct cea_audio_blk {
+  Uchar descs[3];
+};
+
+struct vendor_hdmi {
+  Uchar  support_flags;
+  Uchar  max_tmds_clock;
+  Uchar  latency_present;
+  Uchar  video_latency;
+  Uchar  audio_latency;
+  Uchar  interlaced_video_latency;
+  Uchar  interlaced_audio_latency;
+};
+
+struct cea_vendor_blk {
+  unsigned char ieee_id[3];
+  Uchar  portB:4;
+  Uchar  portA:4;
+  Uchar  portD:4;
+  Uchar  portC:4;
+  struct vendor_hdmi hdmi;
+};
+
+struct cea_speaker_blk 
+{
+  Uchar FLR:1;
+  Uchar LFE:1;
+  Uchar FC:1;
+  Uchar RLR:1;
+  Uchar RC:1;
+  Uchar FLRC:1;
+  Uchar RLRC:1;
+  Uchar FLRW:1;
+  Uchar FLRH:1;
+  Uchar TC:1;
+  Uchar FCH:1;
+  Uchar Resv:5;
+  Uchar ResvByte;
+};
+
+struct cea_data_blk {
+  Uchar len:5;
+  Uchar tag:3;
+  union{
+struct cea_video_blk video;
+struct cea_audio_blk audio;
+struct cea_vendor_blk vendor;
+struct cea_speaker_blk speaker;
+  }u;
+};
+
+struct cea_ext_body {
+  Uchar tag;
+  Uchar rev;
+  Uchar dt_offset;
+  Uchar flags;
+  struct cea_data_blk data_collection;
+};
+
 #endif /* _EDID_H_ */
-- 
1.5.4.4



___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

[PATCH 2/7]implement detailed timing unified interface in interpret_edid.c

2008-12-26 Thread Ma Ling
create unified interface for detail timing operation. 

---
 hw/xfree86/ddc/interpret_edid.c |   64 +++
 1 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
index 0438449..2002cd5 100644
--- a/hw/xfree86/ddc/interpret_edid.c
+++ b/hw/xfree86/ddc/interpret_edid.c
@@ -95,6 +95,70 @@ handle_edid_quirks(xf86MonPtr m)
 }
 }
 
+static int get_cea_detail_timing(Uchar *blk, xf86MonPtr mon,
+ struct detailed_monitor_section *det_mon)
+{
+int dt_num;
+int dt_offset = ((struct cea_ext_body *)blk)->dt_offset;
+
+dt_num = 0;
+
+if (dt_offset < CEA_EXT_MIN_DATA_OFFSET)
+return dt_num;
+
+for (; dt_offset < (CEA_EXT_MAX_DATA_OFFSET - DET_TIMING_INFO_LEN) &&
+   dt_num < CEA_EXT_DET_TIMING_NUM;
+  _NEXT_DT_MD_SECTION(dt_offset)) {
+
+fetch_detailed_block(blk + dt_offset, &mon->ver, det_mon + dt_num);  
+dt_num = dt_num + 1 ;
+}
+
+return dt_num;
+}
+
+static void handle_cea_detail_block(Uchar *ext, xf86MonPtr mon,
+handle_detailed_fn fn,
+void *data)
+{
+int i;
+struct detailed_monitor_section det_mon[CEA_EXT_DET_TIMING_NUM];
+int det_mon_num;
+
+det_mon_num = get_cea_detail_timing(ext, mon, det_mon);
+
+for (i = 0; i < det_mon_num; i++)
+fn(det_mon + i, data); 
+}
+
+void xf86ForEachDetailedBlock(xf86MonPtr mon,
+  handle_detailed_fn fn,
+  void *data)
+{
+int i;
+Uchar *ext;
+
+if (mon == NULL)
+return;
+
+for (i = 0; i < DET_TIMINGS; i++)
+fn(mon->det_mon + i, data);
+
+for (i = 0; i < mon->no_sections; i++) {
+ext = mon->rawData + EDID1_LEN * (i + 1);
+switch (ext[EXT_TAG]){
+case CEA_EXT:
+handle_cea_detail_block(ext, mon, fn, data);
+break;
+case VTB_EXT:
+case DI_EXT:
+case LS_EXT:
+case MI_EXT:
+   break;
+}
+}
+}
+
 struct det_hv_parameter {
 int real_hsize;
 int real_vsize;
-- 
1.5.4.4



___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


[PATCH 2/7] implement detailed timing operation in interpret_edid.c

2008-12-26 Thread Ma Ling
Sorry, please use it to replace "[PATCH 2/7]implement detailed timing unified 
interface in interpret_edid.c" sent early.
In this file handle detailed timing operation in interpret_edid.c

---
 hw/xfree86/ddc/interpret_edid.c |  242 ++-
 1 files changed, 138 insertions(+), 104 deletions(-)

diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
index c0e3df9..0438449 100644
--- a/hw/xfree86/ddc/interpret_edid.c
+++ b/hw/xfree86/ddc/interpret_edid.c
@@ -41,8 +41,11 @@ static void get_display_section(Uchar*, struct disp_features 
*,
 static void get_established_timing_section(Uchar*, struct established_timings 
*);
 static void get_std_timing_section(Uchar*, struct std_timings *,
   struct edid_version *);
+
+static void fetch_detailed_block(Uchar *c, struct edid_version *ver, 
+ struct detailed_monitor_section *det_mon);
 static void get_dt_md_section(Uchar *, struct edid_version *,
- struct detailed_monitor_section *det_mon);
+  struct detailed_monitor_section *det_mon);
 static void copy_string(Uchar *, Uchar *);
 static void get_dst_timing_section(Uchar *, struct std_timings *,
   struct edid_version *);
@@ -52,11 +55,25 @@ static void get_detailed_timing_section(Uchar*, struct  
detailed_timings *);
 static Bool validate_version(int scrnIndex, struct edid_version *);
 
 static void
+find_ranges_section(struct detailed_monitor_section *det, void *ranges)
+{
+   if (det->type == DS_RANGES && det->section.ranges.max_clock)
+   *(struct monitor_ranges **)ranges = &det->section.ranges;
+}
+
+static void
+find_max_detailed_clock(struct detailed_monitor_section *det, void *ret)
+{
+if (det->type == DT) {
+*(int *)ret = max(*((int *)ret),
+  det->section.d_timings.clock);
+}
+}
+
+static void
 handle_edid_quirks(xf86MonPtr m)
 {
-int i, j;
-struct detailed_timings *preferred_timing;
-struct monitor_ranges *ranges;
+struct monitor_ranges *ranges = NULL;
 
 /*
  * max_clock is only encoded in EDID in tens of MHz, so occasionally we
@@ -64,28 +81,49 @@ handle_edid_quirks(xf86MonPtr m)
  * similar.  Strictly we should refuse to round up too far, but let's
  * see how well this works.
  */
-for (i = 0; i < 4; i++) {
-   if (m->det_mon[i].type == DS_RANGES) {
-   ranges = &m->det_mon[i].section.ranges;
-   for (j = 0; j < 4; j++) {
-   if (m->det_mon[j].type == DT) {
-   preferred_timing = &m->det_mon[j].section.d_timings;
-   if (!ranges->max_clock) continue; /* zero is legal */
-   if (ranges->max_clock * 100 < preferred_timing->clock) {
-   xf86Msg(X_WARNING,
-   "EDID preferred timing clock %.2fMHz exceeds "
-   "claimed max %dMHz, fixing\n",
-   preferred_timing->clock / 1.0e6,
-   ranges->max_clock);
-   ranges->max_clock =
-   (preferred_timing->clock+99)/100;
-   return;
-   }
-   }
-   }
-   }
+
+/* Try to find Monitor Range and max clock, then re-set range value*/
+xf86ForEachDetailedBlock(m, find_ranges_section, &ranges);
+if (ranges && ranges->max_clock) {
+int clock = 0;
+xf86ForEachDetailedBlock(m, find_max_detailed_clock, &clock);
+if (clock && (ranges->max_clock * 1e6 < clock)) {
+xf86Msg(X_WARNING, "EDID timing clock %.2f exceeds claimed max "
+"%dMHz, fixing\n", clock / 1.0e6, ranges->max_clock);
+ranges->max_clock = (clock+99)/1e6;
+}
 }
+}
+
+struct det_hv_parameter {
+int real_hsize;
+int real_vsize;
+float target_aspect;
+};
 
+static void handle_detailed_hvsize(struct detailed_monitor_section *det_mon,
+   void *data)
+{
+struct det_hv_parameter *p = (struct det_hv_perameter *)data; 
+float timing_aspect;
+
+if (det_mon->type == DT) {
+struct detailed_timings *timing;
+timing = &det_mon->section.d_timings;
+
+if (!timing->v_size)
+return;
+
+timing_aspect = (float)timing->h_size / timing->v_size;
+if (fabs(1 - (timing_aspect / p->target_aspect)) < 0.05) {
+p->real_hsize = max(p->real_hsize, timing->h_size);
+p->real_vsize = max(p->real_vsize, timing->v_size);
+}
+}
+}
+
+static void encode_aspect_ratio(xf86MonPtr m)
+{
 /*
  * some monitors encode the aspect ratio instead of the physical size.
  * try to find the largest detailed timing that matches that aspect
@@ -95,36 +133,24 @@ handle_edid_quirks(xf86MonPtr m)
(m->features.hsize == 1

[PATCH 3/7]implement detailed timing unified interface in interpret_edid.

2008-12-26 Thread Ma Ling
create unified interface for detail timing operation. 

---
 hw/xfree86/ddc/interpret_edid.c |   64 +++
 1 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
index 0438449..2002cd5 100644
--- a/hw/xfree86/ddc/interpret_edid.c
+++ b/hw/xfree86/ddc/interpret_edid.c
@@ -95,6 +95,70 @@ handle_edid_quirks(xf86MonPtr m)
 }
 }
 
+static int get_cea_detail_timing(Uchar *blk, xf86MonPtr mon,
+ struct detailed_monitor_section *det_mon)
+{
+int dt_num;
+int dt_offset = ((struct cea_ext_body *)blk)->dt_offset;
+
+dt_num = 0;
+
+if (dt_offset < CEA_EXT_MIN_DATA_OFFSET)
+return dt_num;
+
+for (; dt_offset < (CEA_EXT_MAX_DATA_OFFSET - DET_TIMING_INFO_LEN) &&
+   dt_num < CEA_EXT_DET_TIMING_NUM;
+  _NEXT_DT_MD_SECTION(dt_offset)) {
+
+fetch_detailed_block(blk + dt_offset, &mon->ver, det_mon + dt_num);  
+dt_num = dt_num + 1 ;
+}
+
+return dt_num;
+}
+
+static void handle_cea_detail_block(Uchar *ext, xf86MonPtr mon,
+handle_detailed_fn fn,
+void *data)
+{
+int i;
+struct detailed_monitor_section det_mon[CEA_EXT_DET_TIMING_NUM];
+int det_mon_num;
+
+det_mon_num = get_cea_detail_timing(ext, mon, det_mon);
+
+for (i = 0; i < det_mon_num; i++)
+fn(det_mon + i, data); 
+}
+
+void xf86ForEachDetailedBlock(xf86MonPtr mon,
+  handle_detailed_fn fn,
+  void *data)
+{
+int i;
+Uchar *ext;
+
+if (mon == NULL)
+return;
+
+for (i = 0; i < DET_TIMINGS; i++)
+fn(mon->det_mon + i, data);
+
+for (i = 0; i < mon->no_sections; i++) {
+ext = mon->rawData + EDID1_LEN * (i + 1);
+switch (ext[EXT_TAG]){
+case CEA_EXT:
+handle_cea_detail_block(ext, mon, fn, data);
+break;
+case VTB_EXT:
+case DI_EXT:
+case LS_EXT:
+case MI_EXT:
+   break;
+}
+}
+}
+
 struct det_hv_parameter {
 int real_hsize;
 int real_vsize;
-- 
1.5.4.4



___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

[PATCH 4/7] handle detailed timing operation in xf86EdidModes.c

2008-12-26 Thread Ma Ling
handled detailed timing operation .e.g extract detailed timing modes from EDID 
and cea ext, 
then insert mode list.

---
 hw/xfree86/ddc/xf86DDC.h |   44 ++
 hw/xfree86/modes/xf86EdidModes.c |  278 --
 2 files changed, 189 insertions(+), 133 deletions(-)

diff --git a/hw/xfree86/ddc/xf86DDC.h b/hw/xfree86/ddc/xf86DDC.h
index 07411b8..0f4f65f 100644
--- a/hw/xfree86/ddc/xf86DDC.h
+++ b/hw/xfree86/ddc/xf86DDC.h
@@ -62,4 +62,48 @@ extern _X_EXPORT DisplayModePtr xf86DDCGetModes(int 
scrnIndex, xf86MonPtr DDC);
 extern _X_EXPORT Bool
 xf86MonitorIsHDMI(xf86MonPtr mon);
 
+/*
+ * Quirks to work around broken EDID data from various monitors.
+ */
+typedef enum {
+DDC_QUIRK_NONE = 0,
+/* First detailed mode is bogus, prefer largest mode at 60hz */
+DDC_QUIRK_PREFER_LARGE_60 = 1 << 0,
+/* 135MHz clock is too high, drop a bit */
+DDC_QUIRK_135_CLOCK_TOO_HIGH = 1 << 1,
+/* Prefer the largest mode at 75 Hz */
+DDC_QUIRK_PREFER_LARGE_75 = 1 << 2,
+/* Convert detailed timing's horizontal from units of cm to mm */
+DDC_QUIRK_DETAILED_H_IN_CM = 1 << 3,
+/* Convert detailed timing's vertical from units of cm to mm */
+DDC_QUIRK_DETAILED_V_IN_CM = 1 << 4,
+/* Detailed timing descriptors have bogus size values, so just take the
+ * maximum size and use that.
+ */
+DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE = 1 << 5,
+/* Monitor forgot to set the first detailed is preferred bit. */
+DDC_QUIRK_FIRST_DETAILED_PREFERRED = 1 << 6,
+/* use +hsync +vsync for detailed mode */
+DDC_QUIRK_DETAILED_SYNC_PP = 1 << 7,
+/* Force single-link DVI bandwidth limit */
+DDC_QUIRK_DVI_SINGLE_LINK = 1 << 8,
+} ddc_quirk_t;
+
+DisplayModePtr xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC);
+
+extern Bool
+xf86MonitorIsHDMI(xf86MonPtr mon);
+
+typedef void (* handle_detailed_fn)(struct detailed_monitor_section *,void *);
+
+void xf86ForEachDetailedBlock(xf86MonPtr mon,
+  handle_detailed_fn,
+  void *data);
+
+ddc_quirk_t
+xf86DDCDetectQuirks(int scrnIndex, xf86MonPtr DDC, Bool verbose);
+
+void xf86DetTimingApplyQuirks(struct detailed_monitor_section *det_mon,
+  ddc_quirk_t quirks, int hsize, int vsize);
+
 #endif
diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c
index 1413e87..da304a0 100644
--- a/hw/xfree86/modes/xf86EdidModes.c
+++ b/hw/xfree86/modes/xf86EdidModes.c
@@ -45,20 +45,23 @@
 #include 
 #include 
 
+static void handle_detailed_rblank(struct detailed_monitor_section *det_mon,
+   void *data)
+{
+if (det_mon->type == DS_RANGES)
+if (det_mon->section.ranges.supported_blanking & CVT_REDUCED)
+*(Bool*)data = TRUE;
+}
+
 static Bool
 xf86MonitorSupportsReducedBlanking(xf86MonPtr DDC)
 {
 /* EDID 1.4 explicitly defines RB support */
 if (DDC->ver.revision >= 4) {
-   int i;
-   for (i = 0; i < DET_TIMINGS; i++) {
-   struct detailed_monitor_section *det_mon = &DDC->det_mon[i];
-   if (det_mon->type == DS_RANGES)
-   if (det_mon->section.ranges.supported_blanking & CVT_REDUCED)
-   return TRUE;
-   }
-   
-   return FALSE;
+Bool ret = FALSE;
+ 
+xf86ForEachDetailedBlock(DDC, handle_detailed_rblank, &ret);
+return ret;
 }
 
 /* For anything older, assume digital means RB support. Boo. */
@@ -68,34 +71,6 @@ xf86MonitorSupportsReducedBlanking(xf86MonPtr DDC)
 return FALSE;
 }
 
-/*
- * Quirks to work around broken EDID data from various monitors.
- */
-
-typedef enum {
-DDC_QUIRK_NONE = 0,
-/* First detailed mode is bogus, prefer largest mode at 60hz */
-DDC_QUIRK_PREFER_LARGE_60 = 1 << 0,
-/* 135MHz clock is too high, drop a bit */
-DDC_QUIRK_135_CLOCK_TOO_HIGH = 1 << 1,
-/* Prefer the largest mode at 75 Hz */
-DDC_QUIRK_PREFER_LARGE_75 = 1 << 2,
-/* Convert detailed timing's horizontal from units of cm to mm */
-DDC_QUIRK_DETAILED_H_IN_CM = 1 << 3,
-/* Convert detailed timing's vertical from units of cm to mm */
-DDC_QUIRK_DETAILED_V_IN_CM = 1 << 4,
-/* Detailed timing descriptors have bogus size values, so just take the
- * maximum size and use that.
- */
-DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE = 1 << 5,
-/* Monitor forgot to set the first detailed is preferred bit. */
-DDC_QUIRK_FIRST_DETAILED_PREFERRED = 1 << 6,
-/* use +hsync +vsync for detailed mode */
-DDC_QUIRK_DETAILED_SYNC_PP = 1 << 7,
-/* Force single-link DVI bandwidth limit */
-DDC_QUIRK_DVI_SINGLE_LINK = 1 << 8,
-} ddc_quirk_t;
-
 static Bool quirk_prefer_large_60 (int scrnIndex, xf86MonPtr DDC)
 {
 /* Belinea 10 15 55 */
@@ -667,7 +642,7 @@ DDCGuessRangesFromModes(int scrnIndex, MonPtr Monitor, 
DisplayModePtr Modes)
 }
 }
 
-static ddc_quirk_t
+ddc_quirk_t
 xf86DDCDetectQuirks(int scrnIndex,

[PATCH 5/7] handle detailed timing operation in xf86Crtc.c

2008-12-26 Thread Ma Ling
handle detailed timing operation,e.g. set up Monitor from detailed timing 
block 
from EDID and cea ext

---
 hw/xfree86/modes/xf86Crtc.c |  128 ---
 1 files changed, 83 insertions(+), 45 deletions(-)

diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index cb13deb..72f8f15 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -1530,6 +1530,40 @@ GuessRangeFromModes(MonPtr mon, DisplayModePtr mode)
mon->vrefresh[0].lo = 58.0;
 }
 
+struct det_monrec_parameter {
+MonRec *mon_rec;
+int *max_clock;
+enum { sync_config, sync_edid, sync_default } *sync_source;
+};
+
+static void handle_detailed_monrec(struct detailed_monitor_section *det_mon,
+   void *data)
+{  
+enum { sync_config, sync_edid, sync_default };
+struct det_monrec_parameter *p; 
+p = (struct det_monrec_parameter *)data;
+
+if (det_mon->type == DS_RANGES) {
+struct monitor_ranges *ranges = &det_mon->section.ranges;
+if (p->mon_rec->nHsync == 0 && ranges->max_h) {
+p->mon_rec->hsync[p->mon_rec->nHsync].lo = ranges->min_h;
+p->mon_rec->hsync[p->mon_rec->nHsync].hi = ranges->max_h;
+p->mon_rec->nHsync++;
+if (*p->sync_source == sync_default)
+*p->sync_source = sync_edid;
+}
+if (p->mon_rec->nVrefresh == 0 && ranges->max_v) {
+p->mon_rec->vrefresh[p->mon_rec->nVrefresh].lo = ranges->min_v;
+p->mon_rec->vrefresh[p->mon_rec->nVrefresh].hi = ranges->max_v;
+p->mon_rec->nVrefresh++;
+if (*p->sync_source == sync_default)
+*p->sync_source = sync_edid;
+}
+if (ranges->max_clock * 1000 > *p->max_clock)
+*p->max_clock = ranges->max_clock * 1000;
+}
+}
+
 void
 xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
 {
@@ -1608,42 +1642,22 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int 
maxY)

edid_monitor = output->MonInfo;

-   if (edid_monitor)
-   {
-   int i;
-   Boolset_hsync = mon_rec.nHsync == 0;
-   Boolset_vrefresh = mon_rec.nVrefresh == 0;
-   struct disp_features*features = &edid_monitor->features;
+if (edid_monitor)
+{
+struct det_monrec_parameter p;
+struct disp_features*features = &edid_monitor->features;
 
/* if display is not continuous-frequency, don't add default modes 
*/
if (!GTF_SUPPORTED(features->msc))
add_default_modes = FALSE;
-
-   for (i = 0; i < sizeof (edid_monitor->det_mon) / sizeof 
(edid_monitor->det_mon[0]); i++)
-   {
-   if (edid_monitor->det_mon[i].type == DS_RANGES)
-   {
-   struct monitor_ranges   *ranges = 
&edid_monitor->det_mon[i].section.ranges;
-   if (set_hsync && ranges->max_h)
-   {
-   mon_rec.hsync[mon_rec.nHsync].lo = ranges->min_h;
-   mon_rec.hsync[mon_rec.nHsync].hi = ranges->max_h;
-   mon_rec.nHsync++;
-   if (sync_source == sync_default)
-   sync_source = sync_edid;
-   }
-   if (set_vrefresh && ranges->max_v)
-   {
-   mon_rec.vrefresh[mon_rec.nVrefresh].lo = ranges->min_v;
-   mon_rec.vrefresh[mon_rec.nVrefresh].hi = ranges->max_v;
-   mon_rec.nVrefresh++;
-   if (sync_source == sync_default)
-   sync_source = sync_edid;
-   }
-   if (ranges->max_clock * 1000 > max_clock)
-   max_clock = ranges->max_clock * 1000;
-   }
-   }
+
+p.mon_rec = &mon_rec;
+p.max_clock = &max_clock;
+p.sync_source = &sync_source;
+
+xf86ForEachDetailedBlock(edid_monitor,
+handle_detailed_monrec,
+&p);
}
 
if (xf86GetOptValFreq (output->options, OPTION_MIN_CLOCK,
@@ -2887,6 +2901,35 @@ xf86OutputSetEDIDProperty (xf86OutputPtr output, void 
*data, int data_len)
 
 #endif
 
+/* Pull out a phyiscal size from a detailed timing if available. */
+struct det_phySize_parameter {
+xf86OutputPtr output;
+ddc_quirk_t quirks;
+Bool ret;   
+};
+
+static void  handle_detailed_physical_size(struct detailed_monitor_section 
+ *det_mon, void *data)
+{
+struct det_phySize_parameter *p;
+p = (struct det_phySize_parameter *)data;
+
+if (p->ret == TRUE )
+return ;
+
+xf86DetTimingApplyQuirks(det_mon, p->quirks,
+ p->output->M

PATCH 6/7] handle detailed timing operation in xf86Configure.c

2008-12-26 Thread Ma Ling
handle detailed timing in xf86Configure.c

---
 hw/xfree86/common/xf86Configure.c |   57 
 1 files changed, 32 insertions(+), 25 deletions(-)

diff --git a/hw/xfree86/common/xf86Configure.c 
b/hw/xfree86/common/xf86Configure.c
index b803b49..822b020 100644
--- a/hw/xfree86/common/xf86Configure.c
+++ b/hw/xfree86/common/xf86Configure.c
@@ -531,6 +531,36 @@ configureMonitorSection (int screennum)
 return ptr;
 }
 
+/* Initialize Configure Monitor from Detailed Timing Block */  
+static void handle_detailed_input(struct detailed_monitor_section *det_mon,
+  void *data)
+{
+XF86ConfMonitorPtr ptr = (XF86ConfMonitorPtr) data; 
+
+switch (det_mon->type) {
+case DS_NAME:
+ptr->mon_modelname = xf86confrealloc(ptr->mon_modelname, 
+ 
strlen((char*)(det_mon->section.name)) +
+ 1);
+strcpy(ptr->mon_modelname,
+ (char*)(det_mon->section.name));
+break;
+case DS_RANGES:
+ptr->mon_hsync[ptr->mon_n_hsync].lo =
+det_mon->section.ranges.min_h;
+ptr->mon_hsync[ptr->mon_n_hsync].hi =
+det_mon->section.ranges.max_h;
+ptr->mon_n_vrefresh = 1;
+ptr->mon_vrefresh[ptr->mon_n_hsync].lo =
+det_mon->section.ranges.min_v;
+ptr->mon_vrefresh[ptr->mon_n_hsync].hi =
+det_mon->section.ranges.max_v;
+ptr->mon_n_hsync++;
+default:
+break;
+}
+}
+
 static XF86ConfMonitorPtr
 configureDDCMonitorSection (int screennum)
 {
@@ -578,31 +608,8 @@ configureDDCMonitorSection (int screennum)
 }
 #endif /* def CONFIGURE_DISPLAYSIZE */
 
-for (i=0;i<4;i++) {
-   switch (ConfiguredMonitor->det_mon[i].type) {
-   case DS_NAME:
-   ptr->mon_modelname  = xf86confrealloc(ptr->mon_modelname, 
- strlen((char*)(ConfiguredMonitor->det_mon[i].section.name))
-   + 1);
-   strcpy(ptr->mon_modelname,
-  (char*)(ConfiguredMonitor->det_mon[i].section.name));
-   break;
-   case DS_RANGES:
-   ptr->mon_hsync[ptr->mon_n_hsync].lo =
-   ConfiguredMonitor->det_mon[i].section.ranges.min_h;
-   ptr->mon_hsync[ptr->mon_n_hsync].hi =
-   ConfiguredMonitor->det_mon[i].section.ranges.max_h;
-   ptr->mon_n_vrefresh = 1;
-   ptr->mon_vrefresh[ptr->mon_n_hsync].lo =
-   ConfiguredMonitor->det_mon[i].section.ranges.min_v;
-   ptr->mon_vrefresh[ptr->mon_n_hsync].hi =
-   ConfiguredMonitor->det_mon[i].section.ranges.max_v;
-   ptr->mon_n_hsync++;
-   default:
-   break;
-   }
-}
-
+xf86ForEachDetailedBlock(ConfiguredMonitor, handle_detailed_input,
+ ptr);
 if (ConfiguredMonitor->features.dpms) {
   ptr->mon_option_lst = xf86addNewOption(ptr->mon_option_lst, 
xstrdup("DPMS"), NULL);
 }
-- 
1.5.4.4



___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

[PATCH 7/7] handle detailed timing operation in print_edid.c

2008-12-26 Thread Ma Ling
Here we print all detailed timing of EDID and CEA or other extension.

---
 hw/xfree86/ddc/print_edid.c |  252 +++
 1 files changed, 136 insertions(+), 116 deletions(-)

diff --git a/hw/xfree86/ddc/print_edid.c b/hw/xfree86/ddc/print_edid.c
index 7b6e298..3dff1ab 100644
--- a/hw/xfree86/ddc/print_edid.c
+++ b/hw/xfree86/ddc/print_edid.c
@@ -333,123 +333,137 @@ print_detailed_timings(int scrnIndex, struct 
detailed_timings *t)
 }
 }
 
+struct det_print_parameter{
+  xf86MonPtr m;
+  int index;
+  ddc_quirk_t quirks;
+};
+
 static void
-print_detailed_monitor_section(int scrnIndex,
-  struct detailed_monitor_section *m)
+handle_detailed_print(struct detailed_monitor_section *det_mon,
+  void *data)
 {
-int i,j;
-  
-for (i=0;imin_v, r->max_v, r->min_h, r->max_h);
-   if (r->max_clock_khz != 0) {
-   xf86ErrorF(" PixClock max %i kHz\n", r->max_clock_khz);
-   if (r->maxwidth)
-   xf86DrvMsg(scrnIndex, X_INFO, "Maximum pixel width: %d\n",
-  r->maxwidth);
-   xf86DrvMsg(scrnIndex, X_INFO, "Supported aspect ratios:");
-   if (r->supported_aspect & SUPPORTED_ASPECT_4_3)
-   xf86ErrorF(" 4:3%s",
-   r->preferred_aspect == PREFERRED_ASPECT_4_3?"*":"");
-   if (r->supported_aspect & SUPPORTED_ASPECT_16_9)
-   xf86ErrorF(" 16:9%s",
-   r->preferred_aspect == PREFERRED_ASPECT_16_9?"*":"");
-   if (r->supported_aspect & SUPPORTED_ASPECT_16_10)
-   xf86ErrorF(" 16:10%s",
-   r->preferred_aspect == PREFERRED_ASPECT_16_10?"*":"");
-   if (r->supported_aspect & SUPPORTED_ASPECT_5_4)
-   xf86ErrorF(" 5:4%s",
-   r->preferred_aspect == PREFERRED_ASPECT_5_4?"*":"");
-   if (r->supported_aspect & SUPPORTED_ASPECT_15_9)
-   xf86ErrorF(" 15:9%s",
-   r->preferred_aspect == PREFERRED_ASPECT_15_9?"*":"");
-   xf86ErrorF("\n");
-   xf86DrvMsg(scrnIndex, X_INFO, "Supported blankings:");
-   if (r->supported_blanking & CVT_STANDARD)
-   xf86ErrorF(" standard");
-   if (r->supported_blanking & CVT_REDUCED)
-   xf86ErrorF(" reduced");
-   xf86ErrorF("\n");
-   xf86DrvMsg(scrnIndex, X_INFO, "Supported scalings:");
-   if (r->supported_scaling & SCALING_HSHRINK)
-   xf86ErrorF(" hshrink");
-   if (r->supported_scaling & SCALING_HSTRETCH)
-   xf86ErrorF(" hstretch");
-   if (r->supported_scaling & SCALING_VSHRINK)
-   xf86ErrorF(" vshrink");
-   if (r->supported_scaling & SCALING_VSTRETCH)
-   xf86ErrorF(" vstretch");
-   xf86ErrorF("\n");
-   xf86DrvMsg(scrnIndex, X_INFO, "Preferred refresh rate: %d\n",
-  r->preferred_refresh);
-   } else if (r->max_clock != 0) {
-   xf86ErrorF(" PixClock max %i MHz\n", r->max_clock);
-   } else {
-   xf86ErrorF("\n");
-   }
-   if (r->gtf_2nd_f > 0)
-   xf86DrvMsg(scrnIndex,X_INFO," 2nd GTF parameters: f: %i kHz "
-  "c: %i m: %i k %i j %i\n", r->gtf_2nd_f,
-  r->gtf_2nd_c, r->gtf_2nd_m, r->gtf_2nd_k,
-  r->gtf_2nd_j);
-   break;
-   }
-   case DS_STD_TIMINGS:
-   for (j = 0; j<5; j++) 
-   xf86DrvMsg(scrnIndex,X_INFO,"#%i: hsize: %i  vsize %i  refresh: 
%i  "
-  "vid: %i\n",i,m[i].section.std_t[i].hsize,
-  
m[i].section.std_t[j].vsize,m[i].section.std_t[j].refresh,
-  m[i].section.std_t[j].id);
-   break;
-   case DS_WHITE_P:
-   for (j = 0; j<2; j++)
-   if (m[i].section.wp[j].index != 0)
-   xf86DrvMsg(scrnIndex,X_INFO,
-  "White point %i: whiteX: %f, whiteY: %f; gamma: 
%f\n",
-  
m[i].section.wp[j].index,m[i].section.wp[j].white_x,
-  m[i].section.wp[j].white_y,
-  m[i].section.wp[j].white_gamma);
-   break;
-   case DS_CMD:
-   xf86DrvMsg(scrnIndex, X_INFO,
-  "Color management data: (not decoded)\n");
-   break;
-   case DS_CVT:
-   xf86DrvMsg(scrnIndex, X_INFO,
-  "CVT 3-byte-code modes:\n");
-   print_cvt_timings(scrnIndex, m[i].section.cvt);
-   break;
-   case DS_EST_III:
-   xf86DrvMsg(scrnIndex, X_INFO,
-  "Established timings III: (not decoded)\n");
-   break;
-   case D

Re: Intel + GEM + suspend -> fail

2008-12-26 Thread Vasily Khoruzhick
I have the same issue. Vanilla 2.6.28 kernel, Xorg stack from gentoo x11 
overlay, gma950.

Sometimes it occurs even without suspend - few switches X->console->X are 
enought.

Regards
Vasily

On 23 December 2008 06:56:07 Peter Clifton wrote:
> If it's a known issue, fine, well and good.. otherwise let me know and
> I'll dig you out some more info as to the exact config, and see if I can
> be useful about getting this fixed.
>
> 2.6.28 kernel + patch + patch "drm/i915: Don't return busy for buffers
> left on the flushing list."
>
> Intel driver: d8e89b26ef5ef2c15e5d34162b14d279a7f0bb1c (I think!)
> Mesa: d9b92b112fb64005c71edf1158f7dffabc4659bb
>
>
> [ 3027.819992] [ cut here ]
> [ 3027.819996] WARNING:
> at
> ../../../../home/pcjc2/source/ubuntu-kernel/ubuntu-jaunty/drivers/gpu/drm/i
>915/i915_gem.c:2470 i915_gem_idle+0x3a8/0x3d0 [i915]() [ 3027.82]
> Modules linked in: isofs udf crc_itu_t i915 drm
> binfmt_misc af_packet bridge stp bnep sco rfcomm l2cap bluetooth ipv6
> acpi_cpufreq cpufreq_powersave cpufreq_conservative cpufreq_ondemand
> cpufreq_stats cpufreq_userspace freq_table wmi pci_slot sbs sbshc
> iptable_filter ip_tables x_tables pciehp lp joydev pcmcia arc4 ecb
> iwl3945 rfkill parport_pc parport mac80211 led_class snd_hda_intel
> cfg80211 container tpm_infineon tpm tpm_bios video output snd_pcm
> snd_seq iTCO_wdt sdhci_pci sdhci tifm_7xx1 snd_timer iTCO_vendor_support
> snd_seq_device tifm_core intel_agp psmouse serio_raw mmc_core ac snd
> yenta_socket rsrc_nonstatic pcmcia_core evdev pcspkr agpgart battery
> button shpchp pci_hotplug soundcore snd_page_alloc ext3 jbd mbcache
> sd_mod crc_t10dif sr_mod cdrom sg usbhid hid ata_generic ahci ata_piix
> pata_acpi tg3 libata scsi_mod ehci_hcd uhci_hcd usbcore thermal
> processor fan fbcon tileblit font bitblit softcursor fuse
> [ 3027.820090] Pid: 8446, comm: Xorg Tainted: G   A
> 2.6.28-3-generic #4-Ubuntu
> [ 3027.820093] Call Trace:
> [ 3027.820099]  [] ? printk+0x18/0x1b
> [ 3027.820103]  [] warn_on_slowpath+0x54/0x80
> [ 3027.820114]  [] ? __next_cpu+0x15/0x30
> [ 3027.820121]  [] ? i915_gem_retire_requests+0xf9/0x150
> [i915]
> [ 3027.820127]  [] ? i915_gem_retire_requests+0xf9/0x150
> [i915]
> [ 3027.820133]  [] i915_gem_idle+0x3a8/0x3d0 [i915]
> [ 3027.820139]  [] i915_gem_leavevt_ioctl+0x14/0x30 [i915]
> [ 3027.820150]  [] drm_ioctl+0xe0/0x2e0 [drm]
> [ 3027.820155]  [] ? __rcu_process_callbacks+0xcc/0x250
> [ 3027.820161]  [] ? i915_gem_leavevt_ioctl+0x0/0x30 [i915]
> [ 3027.820176]  [] vfs_ioctl+0x79/0x90
> [ 3027.820179]  [] do_vfs_ioctl+0x5e/0x200
> [ 3027.820182]  [] sys_ioctl+0x63/0x70
> [ 3027.820186]  [] sysenter_do_call+0x12/0x2f
> [ 3027.820188] ---[ end trace e1870677dd3009ef ]---
> [ 3027.905871] mtrr: no MTRR for d000,1000 found
> [ 3083.058359] [ cut here ]


signature.asc
Description: This is a digitally signed message part.
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Re: xserver 1.6 branch and mouse position zapping

2008-12-26 Thread Colin Guthrie
'Twas brillig, and Peter Hutterer at 26/12/08 00:25 did gyre and gimble:
> On Wed, Dec 24, 2008 at 11:41:10AM +, Colin Guthrie wrote:
>>> Just built the 1.6 branch + recent mesa snapshot and other such stuff.
>>>
>>> It seems to be stable enough just now, but one thing that's been 
>>> affected is how the mouse positions itself to top-left after a certain 
>>> operations.
>>>
>>> So far I've found odd behaviour when doing:
>>>   * Compiz cube dragging (ctrl+alt+click and drag)
>>>   * Compiz window moving (alt+click and drag)
>>>   * Compiz window moving (click and drag on title bar)
>>>
>>> When this happens the mouse just jumps to the top left, but not always 
>>> immediately.
> 
> 
>>> While this could easily be a compiz issue (I certainly cannot reproduce 
>>> in metacity), I'm guessing it's related to the xserver change. I have 
>>> also updated to the latest input-proto and other such stuff too.
>>>
>>> Is there an obvious starting point to look further into this? Or perhaps 
>>> it's a known issue?
> 
> can you reproduce this with any other client too? It's most likely an X server
> issue, but a good reproduceable behaviour in a client other than compiz makes
> it easier for me to find the bug.
> My first guess is that event replay after synchronous grabs have the wrong
> coordinates.
> You say it doesn't always happen immediately: try to move particularly fast or
> slow to see if that can trigger it.


It's really hard to describe! Speed of movement doesn't seem to make 
much odds but I have narrowed down the behaviour to the "Snapping 
Windows" compiz plugin. Disabling this makes things a lot more stable 
but there are still some issues.

Every time I move the cube face, either with a window drag to the edge, 
or with a keystroke, the mouse pointer zaps to the top left.

I can't duplicate the behaviour in metacity, but I've not tried in Kwin4 
yet.

I'm not 100% certain it's a xserver issue here and perhaps compiz is 
hooking into something it shouldn't be, but it's certainly a regression 
of sorts.

Not really sure how to give you better info to help diagnose :(

I'll try asking on compiz IRC to see if anyone else is experiencing the 
same issues.

>> I'm thinking that there is *something* up with mouse moves generally. 
>> Simple things like hovering the mouse over a link in firefox is also a 
>> bit odd. Hard to describe really but it seems that the "hover" event (in 
>> web/js event terminology) only happens when the mouse is actually 
>> *moving* not when it's just settled over the link.
> 
> A NotifyInferior event sent when moving the mouse from the menu bars into the
> main window has the wrong subwindow information. This causes some internal
> state in firefox to go nuts. Attributed to the wrong enter/leave model, see
> also
> 
> http://lists.freedesktop.org/archives/xorg/2008-December/041696.html
> http://bugs.freedesktop.org/show_bug.cgi?id=19086

Thanks Peter. The patck on #19086 appears to be working nicely for me.

Col

-- 

Colin Guthrie
gmane(at)colin.guthr.ie
http://colin.guthr.ie/

Day Job:
   Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
   Mandriva Linux Contributor [http://www.mandriva.com/]
   PulseAudio Hacker [http://www.pulseaudio.org/]
   Trac Hacker [http://trac.edgewall.org/]

___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Profiling redraws with Xorg 1.5.99.3

2008-12-26 Thread Peter Clifton
Hi guys,

I've been profiling some speed differences rendering pixel aligned
(should be fast-path) cairo drawing, and happened across the fact that
for my redraw test (which is running flat out), 13% of my total system
time is spent in dixLookupPrivate.

Is there anything which can be done to avoid the overhead of
dixLookupPrivate?

The overhead is spread over a number of callers, the top few being:

exaPixmapIsOffscreen (Total 3.43%)
exaDoMoveInPixmap(Total 1.82%)
exaDoMigration   (Total 1.17%)

Now whether this is simply because my cairo rendering is slow, and
causing lots of migration I don't know.. but I thought it would be of
interest here.

This is made with the Intel driver at the tip of the 1.6 branch, using
EXA acceleration.

Best wishes,

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)

___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: Profiling redraws with Xorg 1.5.99.3

2008-12-26 Thread Erik Andrén
2008/12/26 Peter Clifton :
> Hi guys,
>
> I've been profiling some speed differences rendering pixel aligned
> (should be fast-path) cairo drawing, and happened across the fact that
> for my redraw test (which is running flat out), 13% of my total system
> time is spent in dixLookupPrivate.
>
> Is there anything which can be done to avoid the overhead of
> dixLookupPrivate?
>
> The overhead is spread over a number of callers, the top few being:
>
> exaPixmapIsOffscreen (Total 3.43%)
> exaDoMoveInPixmap(Total 1.82%)
> exaDoMigration   (Total 1.17%)
>
> Now whether this is simply because my cairo rendering is slow, and
> causing lots of migration I don't know.. but I thought it would be of
> interest here.
>
> This is made with the Intel driver at the tip of the 1.6 branch, using
> EXA acceleration.
>
> Best wishes,
>

Perhaps you're struck by this bug:
http://bugs.freedesktop.org/show_bug.cgi?id=16647

Regards,
Erik

> --
> Peter Clifton
>
> Electrical Engineering Division,
> Engineering Department,
> University of Cambridge,
> 9, JJ Thomson Avenue,
> Cambridge
> CB3 0FA
>
> Tel: +44 (0)7729 980173 - (No signal in the lab!)
>
> ___
> xorg mailing list
> xorg@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xorg
>
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: about continuous frequency

2008-12-26 Thread Alex Deucher
On Thu, Dec 25, 2008 at 2:33 AM, Ma, Ling  wrote:
> hi Alex,
> Because the flag exist in EDID, but some laptop can't provide EDID, how can 
> we know whether it support continuous frequency or not ?
>

Hi,

  Most laptop panels have a fixed resolution so generally the driver
will always run the panel at it's native resolution regardless of the
requested mode.  If a non-native mode is selected, the driver will
either reject the mode or use the scaler the up/down-scale the
requested mode to the panel's native resolution and timing.

Alex
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: Profiling redraws with Xorg 1.5.99.3

2008-12-26 Thread Peter Clifton
On Fri, 2008-12-26 at 16:53 +0100, Erik Andrén wrote:
> 2008/12/26 Peter Clifton :
> > Hi guys,
> >
> > I've been profiling some speed differences rendering pixel aligned
> > (should be fast-path) cairo drawing, and happened across the fact that
> > for my redraw test (which is running flat out), 13% of my total system
> > time is spent in dixLookupPrivate.
> >
> > Is there anything which can be done to avoid the overhead of
> > dixLookupPrivate?
> >
> > The overhead is spread over a number of callers, the top few being:
> >
> > exaPixmapIsOffscreen (Total 3.43%)
> > exaDoMoveInPixmap(Total 1.82%)
> > exaDoMigration   (Total 1.17%)
> >
> > Now whether this is simply because my cairo rendering is slow, and
> > causing lots of migration I don't know.. but I thought it would be of
> > interest here.
> >
> > This is made with the Intel driver at the tip of the 1.6 branch, using
> > EXA acceleration.
> >
> > Best wishes,
> >
> 
> Perhaps you're struck by this bug:
> http://bugs.freedesktop.org/show_bug.cgi?id=16647

Could be. Shame the new optimised implementation of the private lookup
had to be reverted on the 1.5 branch.

I'm running 1.5.99, and it would appear that the patch is applied. It is
a shame dixLookupPrivate is consuming so many cycles still.

The patch for the performance issue is not applied on the server I'm
using, so I'll try applying that and rebuilding. Thanks for the pointer!

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)

___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Re: memcpy to AGP vs memcpy to framebuffer - which is faster?

2008-12-26 Thread Alex Deucher
On Wed, Dec 24, 2008 at 1:28 PM, Alex Villací­s Lasso
 wrote:
> This is probably a very basic question, but it is important for me to know:
>
> If I do an ordinary (non-accelerated) memcpy of a frame from system
> memory to a buffer in AGP memory (allocated via DRI), is it any faster
> than a (non-accelerated) memcpy of the exact same frame to a buffer area
> in offscreen memory in the framebuffer? Does the fact of whether the
> chipset is integrated into the mainboard (and using memory stolen from
> main RAM as video memory) affect this, as opposed to a plug-in card in
> the AGP port?

It's going to be faster to copy to gart buffers rather than to access
framebuffer memory directly since you don't have to go across the
PCI/AGP bus.  For IGP chips you could probably copy stuff directly to
the stolen memory pool (if you know where it is), but in that case it
doesn't go through the GPU's host data path which handles tiling and
things like that.

>
> I want to know because I am evaluating whether it is worthwhile to
> implement allocation of AGP buffers via DRI in the XVideo code path of
> xf86-video-savage. The "mastered image transfer" (used to transform from
> planar YV12 to packed YUV) present in the chipset can choose between
> framebuffer memory and AGP memory as a source for the conversion.
> Currently it uses an upload from system memory to an area in offscreen
> memory, followed by the conversion. However, the upload to the
> framebuffer is the main source of delay, and measurements with mplayer
> and a 640x480 movie show that software conversion (BCIForXV=off) is
> *faster* (90 seconds) than BCI-mediated conversion (110 seconds).

You'd have to benchmark it to be sure. The advantage of using gart
buffers is that the GPU will do the fetch across the bus freeing the
CPU to do other stuff.

Alex
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: Profiling redraws with Xorg 1.5.99.3

2008-12-26 Thread Clemens Eisserer
> Could be. Shame the new optimised implementation of the private lookup
> had to be reverted on the 1.5 branch.
Its not shame, its just that ABI changes don't fit in minor releases.

> I'm running 1.5.99, and it would appear that the patch is applied. It is
> a shame dixLookupPrivate is consuming so many cycles still.
I doubt the new implementation could consume 13% of total cycles.
Its _very_ quick and should consume only a few cycles.

> The patch for the performance issue is not applied on the server I'm
> using, so I'll try applying that and rebuilding. Thanks for the pointer!
Could be. When have you pulled your version?
I thought the patch was applied to 1.6 quite a while ago.

- Clemens
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: Profiling redraws with Xorg 1.5.99.3

2008-12-26 Thread Peter Clifton
On Fri, 2008-12-26 at 17:48 +0100, Clemens Eisserer wrote:
> > Could be. Shame the new optimised implementation of the private lookup
> > had to be reverted on the 1.5 branch.
> Its not shame, its just that ABI changes don't fit in minor releases.
> 
> > I'm running 1.5.99, and it would appear that the patch is applied. It is
> > a shame dixLookupPrivate is consuming so many cycles still.
> I doubt the new implementation could consume 13% of total cycles.
> Its _very_ quick and should consume only a few cycles.
> 
> > The patch for the performance issue is not applied on the server I'm
> > using, so I'll try applying that and rebuilding. Thanks for the pointer!
> Could be. When have you pulled your version?

> I thought the patch was applied to 1.6 quite a while ago.

The other patch which is in that bug (marked as FIXED) is
not applied to either 1.6, or the git master. Only the patch for
dixLookupPrivate is.

Even with both patches applied, dixLookupPrivate takes 10% of system
time in my rendering test with cairo.

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)


___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: Profiling redraws with Xorg 1.5.99.3

2008-12-26 Thread Peter Clifton
On Fri, 2008-12-26 at 17:48 +0100, Clemens Eisserer wrote:
> > Could be. Shame the new optimised implementation of the private lookup
> > had to be reverted on the 1.5 branch.
> Its not shame, its just that ABI changes don't fit in minor releases.
> 
> > I'm running 1.5.99, and it would appear that the patch is applied. It is
> > a shame dixLookupPrivate is consuming so many cycles still.
> I doubt the new implementation could consume 13% of total cycles.
> Its _very_ quick and should consume only a few cycles.

Ok - so I found my own bug.. I was dividing by 256, rather than 255 when
computing colours, and getting a non 1.0 alpha in cairo - hence was
drawing translucent lines rather than solid ones, hence a huge cost in
pixmap migration for each line I drew. (Almost every other column, and
almost every other row on the screen).

With that fixed, the dixLookupPrivate only consumes 4.5% of the total
system time. I say "only", but that is still about 4% or so too many ;).

-- 
Peter Clifton

Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA

Tel: +44 (0)7729 980173 - (No signal in the lab!)

___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: Bad performance on 2.6.28rc vs. 2.6.27 for intel 2.5.1 + xserver 1.5.3

2008-12-26 Thread Colin Guthrie
'Twas brillig, and Colin Guthrie at 15/12/08 00:19 did gyre and gimble:
> Just trying a new kernel 2.6.28rc and without changing anything else my 
> DRI/GLX performance seems to have suffered badly. I'm running compiz on 
> a i945GM.
> 
> Is there anything specific that needs to be changed (e.g. in libdrm or 
> mesa) to keep up to date with changes in the kernel itself?
> 
> If I need to provide logs etc. for debugging it can be arranged ;)

Just wanted to follow up on this. I'm now using server-1.6-branch, 
libdrm 2.4.3 and a mesa snapshot from a few days ago.

Booting into kernel 2.6.28rc8 causes a massive slowdown in compiz. Could 
this be something simple like a timing issue on the compiz side 
affecting it's animations or something more sinister?

I'll ask upstream on compiz IRC but I'm just canvassing opinion from the 
clever folks here to see if there is anything obvious that I need to 
take into account :)

Col

-- 

Colin Guthrie
gmane(at)colin.guthr.ie
http://colin.guthr.ie/

Day Job:
   Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
   Mandriva Linux Contributor [http://www.mandriva.com/]
   PulseAudio Hacker [http://www.pulseaudio.org/]
   Trac Hacker [http://trac.edgewall.org/]

___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


How to get working OpenGL on Intel G45?

2008-12-26 Thread Magnus Hörlin
Hi. I've built X from git several times since this summer but never 
managed to get "OpenGL renderer string" to anything but  "Software 
Rasterizer" on my Intel G45 board. This time it's with 2.6.28 but it 
doesn't seem to help. What should I look for? It works with standard 
ubuntu 8.10 but I need more a recent X for hdmi audio to work. Thankful 
for any help,
/Magnus H



xorg.conf:
Section "Device"
Identifier  "g45-fus"
Driver  "intel"
Option  "AccelMethod"   "UXA"
Option  "monitor-HDMI-1" "fus-hdmi"
EndSection

Section "Monitor"
Identifier   "fus-hdmi"
Modeline "1920x1200_50.00" 158.08 1920 2032 2240 2560 1200 1201 
1204 1235 -HSync +Vsync
EndSection

Section "Screen"
Identifier "g45-fus"
Device "g45-fus"
Monitor"fus-hdmi"
SubSection "Display"
Modes   "1440x900"
EndSubSection
EndSection



glxinfo:
name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, 
GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
GLX_OML_swap_method, GLX_SGI_swap_control, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
client glx vendor string: SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,
GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap
GLX version: 1.2
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
OpenGL vendor string: Mesa Project
OpenGL renderer string: Software Rasterizer
OpenGL version string: 2.1 Mesa 7.3-devel
OpenGL shading language version string: 1.10
OpenGL extensions:
GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,
GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
GL_ARB_half_float_pixel, GL_ARB_imaging, GL_ARB_multisample,
GL_ARB_multitexture, GL_ARB_occlusion_query, 
GL_ARB_pixel_buffer_object,
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shader_objects,
GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_shadow_ambient,
GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle,
GL_ARB_transpose_matrix, GL_ARB_vertex_buffer_object,
GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ARB_window_pos,
GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_logic_op, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
GL_EXT_clip_volume_hint, GL_EXT_compiled_vertex_array, 
GL_EXT_convolution,
GL_EXT_copy_texture, GL_EXT_depth_bounds_test, 
GL_EXT_draw_range_elements,
GL_EXT_framebuffer_object, GL_EXT_framebuffer_blit, GL_EXT_fog_coord,
GL_EXT_gpu_program_parameters, GL_EXT_histogram, 
GL_EXT_multi_draw_arrays,
GL_EXT_packed_depth_stencil, GL_EXT_packed_pixels,
GL_EXT_paletted_texture, GL_EXT_pixel_buffer_object,
GL_EXT_point_parameters, GL_EXT_polygon_offset, GL_EXT_rescale_normal,
GL_EXT_secondary_color, GL_EXT_separate_specular_color,
GL_EXT_shadow_funcs, GL_EXT_shared_texture_palette, 
GL_EXT_stencil_wrap,
GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,
GL_EXT_vertex_array, GL_3DFX_texture_compression_FXT1,
GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object,
GL_ATI_blend_equation_separate, GL_ATI_texture_env_combine3,
GL_ATI_texture_mirror_once, GL_ATI_fragment_shader,
GL_ATI_separate_stencil, GL_IBM_multimode_draw_arrays,
GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat,
GL_INGR_blend_func_separate, GL_MESA_pack_invert, 
GL_MESA_program_debug,
GL_MESA_resize_buffers, GL_MESA_texture_array, GL_MESA_ycbcr_texture,
GL_MESA_window_pos, G

xorg-server from git master: ctrl+alt+backspace doesn't work anymore

2008-12-26 Thread Vasily Khoruzhick
Hi,

I recently upgraded to latest X11 stack from gentoo x11 overlay (just want to 
test gem+dri2 :)), and it seems that ctrl+alt+backspace doesn't kill X 
anymore. Is it bug or planned behavior?

Regards
Vasily


signature.asc
Description: This is a digitally signed message part.
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Re: How to get working OpenGL on Intel G45?

2008-12-26 Thread Adam K Kirchhoff
On Fri, 2008-12-26 at 22:29 +0100, Magnus Hörlin wrote:

> glxinfo:
> name of display: :0.0
> display: :0  screen: 0
> direct rendering: Yes
> server glx vendor string: SGI
> server glx version string: 1.2
> server glx extensions:
> GLX_ARB_multisample, GLX_EXT_import_context, 
> GLX_EXT_texture_from_pixmap,
> GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
> GLX_OML_swap_method, GLX_SGI_swap_control, GLX_SGIS_multisample,
> GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
> client glx vendor string: SGI
> client glx version string: 1.4
> client glx extensions:
> GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
> GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
> GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,
> GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control,
> GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
> GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
> GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap
> GLX version: 1.2
> GLX extensions:
> GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
> GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
> GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
> OpenGL vendor string: Mesa Project
> OpenGL renderer string: Software Rasterizer
> OpenGL version string: 2.1 Mesa 7.3-devel
> OpenGL shading language version string: 1.10
> OpenGL extensions:
> GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,
> GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
> GL_ARB_half_float_pixel, GL_ARB_imaging, GL_ARB_multisample,
> GL_ARB_multitexture, GL_ARB_occlusion_query, 
> GL_ARB_pixel_buffer_object,
> GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shader_objects,
> GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_shadow_ambient,
> GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
> GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
> GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
> GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat,
> GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle,
> GL_ARB_transpose_matrix, GL_ARB_vertex_buffer_object,
> GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ARB_window_pos,
> GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
> GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
> GL_EXT_blend_logic_op, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
> GL_EXT_clip_volume_hint, GL_EXT_compiled_vertex_array, 
> GL_EXT_convolution,
> GL_EXT_copy_texture, GL_EXT_depth_bounds_test, 
> GL_EXT_draw_range_elements,
> GL_EXT_framebuffer_object, GL_EXT_framebuffer_blit, GL_EXT_fog_coord,
> GL_EXT_gpu_program_parameters, GL_EXT_histogram, 
> GL_EXT_multi_draw_arrays,
> GL_EXT_packed_depth_stencil, GL_EXT_packed_pixels,
> GL_EXT_paletted_texture, GL_EXT_pixel_buffer_object,
> GL_EXT_point_parameters, GL_EXT_polygon_offset, GL_EXT_rescale_normal,
> GL_EXT_secondary_color, GL_EXT_separate_specular_color,
> GL_EXT_shadow_funcs, GL_EXT_shared_texture_palette, 
> GL_EXT_stencil_wrap,
> GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
> GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add,
> GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
> GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
> GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,
> GL_EXT_vertex_array, GL_3DFX_texture_compression_FXT1,
> GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object,
> GL_ATI_blend_equation_separate, GL_ATI_texture_env_combine3,
> GL_ATI_texture_mirror_once, GL_ATI_fragment_shader,
> GL_ATI_separate_stencil, GL_IBM_multimode_draw_arrays,
> GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat,
> GL_INGR_blend_func_separate, GL_MESA_pack_invert, 
> GL_MESA_program_debug,
> GL_MESA_resize_buffers, GL_MESA_texture_array, GL_MESA_ycbcr_texture,
> GL_MESA_window_pos, GL_NV_blend_square, GL_NV_fragment_program,
> GL_NV_light_max_exponent, GL_NV_point_sprite, GL_NV_texture_rectangle,
> GL_NV_texgen_reflection, GL_NV_vertex_program, GL_NV_vertex_program1_1,
> GL_OES_read_format, GL_SGI_color_matrix, GL_SGI_color_table,
> GL_SGI_texture_color_table, GL_SGIS_generate_mipmap,
> GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp,
> GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SGIX_shadow,
> GL_SGIX_shadow_ambient, GL_SUN_multi_draw_arrays
> 

What is the output of 'LIBGL_DEBUG=verbose glxinfo' ?

Adam




-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Re: xorg-server from git master: ctrl+alt+backspace doesn't work anymore

2008-12-26 Thread Shunichi Fuji
>Option "DontZap"  "boolean"
>   This disallows the use of the Ctrl+Alt+Backspace sequence.  That
>   sequence is normally used to terminate the Xorg server.  When
>   this option is enabled (as per default), that key sequence has
>   no special meaning.  Default: on.

you should setup your xorg.conf in the above parameter to use zap.
commit 8c560422b44e012053612754430d2b87dc44ed59 changed the default behavior.

On Sat, 27 Dec 2008 00:27:21 +0200
Vasily Khoruzhick  wrote:

> Hi,
> 
> I recently upgraded to latest X11 stack from gentoo x11 overlay (just want to 
> test gem+dri2 :)), and it seems that ctrl+alt+backspace doesn't kill X 
> anymore. Is it bug or planned behavior?
> 
> Regards
> Vasily
> 

___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: xorg-server from git master: ctrl+alt+backspace doesn't work anymore

2008-12-26 Thread Shunichi Fuji
On Sat, 27 Dec 2008 07:47:19 +0900
Shunichi Fuji  wrote:
> commit 8c560422b44e012053612754430d2b87dc44ed59 changed the default behavior.
 
oops, that is man pages change.
around 9d135ac10a7374c7ccda705f1eeb02cc53076c34 is it.
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: xorg-server from git master: ctrl+alt+backspace doesn't work anymore

2008-12-26 Thread Vasily Khoruzhick
On 27 December 2008 00:47:19 Shunichi Fuji wrote:
> >Option "DontZap"  "boolean"
> >   This disallows the use of the Ctrl+Alt+Backspace sequence. 
> > That sequence is normally used to terminate the Xorg server.  When this
> > option is enabled (as per default), that key sequence has no special
> > meaning.  Default: on.
>
> you should setup your xorg.conf in the above parameter to use zap.
> commit 8c560422b44e012053612754430d2b87dc44ed59 changed the default
> behavior.

Thank you :)


signature.asc
Description: This is a digitally signed message part.
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Re: Fw: Re: [ANNOUNCE] xf86-video-ati 6.9.0.91 - release candidate

2008-12-26 Thread Alex Deucher
On Tue, Dec 23, 2008 at 11:57 PM, Shunichi Fuji  wrote:
>
>
> Begin forwarded message:
>
> Date: Tue, 23 Dec 2008 22:29:38 -0500
> From: Gene Heskett 
> To: Shunichi Fuji 
> Subject: Re: [ANNOUNCE] xf86-video-ati 6.9.0.91 - release candidate
>
>
> On Tuesday 23 December 2008, Shunichi Fuji wrote:
>>On Tue, 23 Dec 2008 19:13:58 -0500
>>
>>Gene Heskett  wrote:
>>> gcc -DHAVE_CONFIG_H -I. -I.. -I./AtomBios/includes -Wall
>>> -I/usr/include/xorg -I/usr/include/drm -I/usr/include/X11/dri
>>> -DDISABLE_EASF -DENABLE_ALL_SERVICE_FUNCTIONS -DATOM_BIOS
>>> -DATOM_BIOS_PARSER -DDRIVER_PARSER -g -O2 -MT radeon_accel.lo -MD -MP -MF
>>> .deps/radeon_accel.Tpo -c
>>> radeon_accel.c  -fPIC -DPIC -o .libs/radeon_accel.o
>>> radeon_accel.c: In function 'RADEONEngineInit':
>>> radeon_accel.c:383: error: 'RADEON_PARAM_NUM_GB_PIPES' undeclared (first
>>> use in this function)
>>> radeon_accel.c:383: error: (Each undeclared identifier is reported only
>>> once radeon_accel.c:383: error: for each function it appears in.)
>>> make[2]: *** [radeon_accel.lo] Error 1
>>> make[2]: Leaving directory `/usr/src/xf86-video-ati-6.9.0.91/src'
>>> make[1]: *** [all-recursive] Error 1
>>> make[1]: Leaving directory `/usr/src/xf86-video-ati-6.9.0.91'
>>> make: *** [all] Error 2
>>>
>>> What header am I missing?
>>
>>RADEON_PARAM_NUM_GB_PIPES defined in radon_drm.h, and git repository has it
>> one. but tar package seems don't have it.
>>
>>i guess that radeon_drm.h will ship with libdrm
>
> Not installed on this FU8 system, and not available to yumex.
>
>>and it install to
>> include/drm. there are 3 copy at least kernel,drm and xf86-video-ati...
>
> I found the one in xf86-video-radeonhd-1.2.4, and copied it to the src tree
> beside the other .h files, and it built, and I've installed it and running
> it, although not much is changed.  glxgears is still moping along at about
> 875 fps, and glxinfo says no drm?dri.
>
> But now this exposes a new problem I don't recall in these exact words, when I
> do a startx, it cannot load the kernel radeon module
> (this from the Xorg.0.log)
>
> (WW) RADEON(0): Direct rendering for RN50/RS600/R600 forced on -- This is NOT
> officially supported at the hardware level and may cause instability or
> lockups
> drmOpenDevice: node name is /dev/dri/card0
> drmOpenDevice: open result is -1, (No such device)
> drmOpenDevice: open result is -1, (No such device)
> drmOpenDevice: Open failed
> [drm] failed to load kernel module "radeon"
> (EE) RADEON(0): [dri] RADEONDRIGetVersion failed to open the DRM
> [dri] Disabling DRI.
>
> So, just for giggles:
>
> [r...@coyote ~]# modprobe radeon
> WARNING: Error inserting drm
> (/lib/modules/2.6.28-rc9/kernel/drivers/gpu/drm/drm.ko): Invalid argument
> FATAL: Error inserting radeon
> (/lib/modules/2.6.28-rc9/kernel/drivers/gpu/drm/radeon/radeon.ko): Invalid
> argument
>
> I can also recall not too far back in the 2.6.28-rc cycle, seeing dmesg
> reporting that the firmware for the card had been loaded from
> the /lib/firmware/radeon directory, but that appears to be on the missing
> list too for an rcN or 2.  The firmware is there from previous kernel builds,
> but is no longer being installed by this line of my "./makeit" script:
>
> make firmware_install && \
>
> Which tells me something has changed in the Makefiles or .config's.
>
> How important is this firmware for the health & well being of an HD2400-Pro
> (rv610) card?

There is no working drm support yet for r6xx/r7xx cards yet.  It will
be released soon.

>
> From the .config that built this kernel:
>
> [r...@coyote linux-2.6.28-rc9]# grep FIRMWARE .config
> # CONFIG_PREVENT_FIRMWARE_BUILD is not set
> # CONFIG_FIRMWARE_IN_KERNEL is not set
> CONFIG_EXTRA_FIRMWARE="radeon/R100_cp.bin.ihex  radeon/R200_cp.bin.ihex
> radeon/R300_cp.bin.ihex  radeon/R420_cp.bin.ihex  radeon/R520_cp.bin.ihex
> radeon/RS600_cp.bin.ihex  radeon/RS690_cp.bin.ihex"
> CONFIG_EXTRA_FIRMWARE_DIR="firmware"
> # CONFIG_DVB_AV7110_FIRMWARE is not set
> # CONFIG_FIRMWARE_EDID is not set
> CONFIG_FIRMWARE_MEMMAP=y

Looks like you are using some distro-specific patch that separates the
firmware from the radeon drm.

Alex
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: Fw: Re: [ANNOUNCE] xf86-video-ati 6.9.0.91 - release candidate

2008-12-26 Thread Gene Heskett
On Friday 26 December 2008, Alex Deucher wrote:
>On Tue, Dec 23, 2008 at 11:57 PM, Shunichi Fuji  wrote:
>> Begin forwarded message:
>>
>> Date: Tue, 23 Dec 2008 22:29:38 -0500
>> From: Gene Heskett 
>> To: Shunichi Fuji 
>> Subject: Re: [ANNOUNCE] xf86-video-ati 6.9.0.91 - release candidate
>>
>> On Tuesday 23 December 2008, Shunichi Fuji wrote:
>>>On Tue, 23 Dec 2008 19:13:58 -0500
>>>
>>>Gene Heskett  wrote:
 gcc -DHAVE_CONFIG_H -I. -I.. -I./AtomBios/includes -Wall
 -I/usr/include/xorg -I/usr/include/drm -I/usr/include/X11/dri
 -DDISABLE_EASF -DENABLE_ALL_SERVICE_FUNCTIONS -DATOM_BIOS
 -DATOM_BIOS_PARSER -DDRIVER_PARSER -g -O2 -MT radeon_accel.lo -MD -MP
 -MF .deps/radeon_accel.Tpo -c
 radeon_accel.c  -fPIC -DPIC -o .libs/radeon_accel.o
 radeon_accel.c: In function 'RADEONEngineInit':
 radeon_accel.c:383: error: 'RADEON_PARAM_NUM_GB_PIPES' undeclared (first
 use in this function)
 radeon_accel.c:383: error: (Each undeclared identifier is reported only
 once radeon_accel.c:383: error: for each function it appears in.)
 make[2]: *** [radeon_accel.lo] Error 1
 make[2]: Leaving directory `/usr/src/xf86-video-ati-6.9.0.91/src'
 make[1]: *** [all-recursive] Error 1
 make[1]: Leaving directory `/usr/src/xf86-video-ati-6.9.0.91'
 make: *** [all] Error 2

 What header am I missing?
>>>
>>>RADEON_PARAM_NUM_GB_PIPES defined in radon_drm.h, and git repository has
>>> it one. but tar package seems don't have it.
>>>
>>>i guess that radeon_drm.h will ship with libdrm
>>
>> Not installed on this FU8 system, and not available to yumex.
>>
>>>and it install to
>>> include/drm. there are 3 copy at least kernel,drm and xf86-video-ati...
>>
>> I found the one in xf86-video-radeonhd-1.2.4, and copied it to the src
>> tree beside the other .h files, and it built, and I've installed it and
>> running it, although not much is changed.  glxgears is still moping along
>> at about 875 fps, and glxinfo says no drm?dri.
>>
>> But now this exposes a new problem I don't recall in these exact words,
>> when I do a startx, it cannot load the kernel radeon module
>> (this from the Xorg.0.log)
>>
>> (WW) RADEON(0): Direct rendering for RN50/RS600/R600 forced on -- This is
>> NOT officially supported at the hardware level and may cause instability
>> or lockups
>> drmOpenDevice: node name is /dev/dri/card0
>> drmOpenDevice: open result is -1, (No such device)
>> drmOpenDevice: open result is -1, (No such device)
>> drmOpenDevice: Open failed
>> [drm] failed to load kernel module "radeon"
>> (EE) RADEON(0): [dri] RADEONDRIGetVersion failed to open the DRM
>> [dri] Disabling DRI.
>>
>> So, just for giggles:
>>
>> [r...@coyote ~]# modprobe radeon
>> WARNING: Error inserting drm
>> (/lib/modules/2.6.28-rc9/kernel/drivers/gpu/drm/drm.ko): Invalid argument
>> FATAL: Error inserting radeon
>> (/lib/modules/2.6.28-rc9/kernel/drivers/gpu/drm/radeon/radeon.ko): Invalid
>> argument
>>
>> I can also recall not too far back in the 2.6.28-rc cycle, seeing dmesg
>> reporting that the firmware for the card had been loaded from
>> the /lib/firmware/radeon directory, but that appears to be on the missing
>> list too for an rcN or 2.  The firmware is there from previous kernel
>> builds, but is no longer being installed by this line of my "./makeit"
>> script:
>>
>> make firmware_install && \
>>
>> Which tells me something has changed in the Makefiles or .config's.
>>
>> How important is this firmware for the health & well being of an
>> HD2400-Pro (rv610) card?
>
>There is no working drm support yet for r6xx/r7xx cards yet.  It will
>be released soon.
>
>> From the .config that built this kernel:
>>
>> [r...@coyote linux-2.6.28-rc9]# grep FIRMWARE .config
>> # CONFIG_PREVENT_FIRMWARE_BUILD is not set
>> # CONFIG_FIRMWARE_IN_KERNEL is not set
>> CONFIG_EXTRA_FIRMWARE="radeon/R100_cp.bin.ihex  radeon/R200_cp.bin.ihex
>> radeon/R300_cp.bin.ihex  radeon/R420_cp.bin.ihex  radeon/R520_cp.bin.ihex
>> radeon/RS600_cp.bin.ihex  radeon/RS690_cp.bin.ihex"
>> CONFIG_EXTRA_FIRMWARE_DIR="firmware"
>> # CONFIG_DVB_AV7110_FIRMWARE is not set
>> # CONFIG_FIRMWARE_EDID is not set
>> CONFIG_FIRMWARE_MEMMAP=y
>
>Looks like you are using some distro-specific patch that separates the
>firmware from the radeon drm.
>
I can nuke the stuff in /lib/firmware/radeon, and nuke that from the .config 
too I guess.

The 2.6.28 final kernel does not install those anymore.  And I no longer see 
messages in the boot log indicating it is being loaded either.  I guess the 
answer to "Should I?" is yes?

Time frame for the release?

>Alex
>___
>xorg mailing list
>xorg@lists.freedesktop.org
>http://lists.freedesktop.org/mailman/listinfo/xorg



-- 
Cheers, Gene
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
Huh?
___
xorg mailing list
xorg@lists.fr