Re: Eyefinity support

2010-09-19 Thread Felix Blanke

On Mon, Sep 20, 2010 at 8:36 AM, Felix Blanke  wrote:

Yeah.

I have buyed a third monitor and now need a video card for it :)

I want to buy a HD 5770 (flex-edition from sapphire) to use 3 monitors via DVI.
Open-source would be mutch nicer to use then the closed source driver :)


Only if you use active displayport->dvi convertors.

Dave.


That is def. wrong!

The HD 5770 flex edition from sapphire can handle 3 monitors via dvi
with a passiv convertor, e.g. see
http://www.techpowerup.com/128506/Sapphire_Announces_HD_5770_FleX_Edition_Connect_Four_Displays_in_Eyefinity.html


Felix
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


Re: Eyefinity support

2010-09-19 Thread Felix Blanke

Thanks a lot for that good news :)

One last question to you:

You saied that there are 2 clock generators. My setup have 1 30" (HP 
3065) and 2 20" (HP 2035). I guess they don't use the ex. same clock 
frequency, but shouldn't it be possible that the 30" uses the first 
clock generator and the 2 20" (which are identical) uses the second one?



Regards,
Felix

Marcel Schaal schrieb:

Hi,

a Radeon HD 5750 with two DVI, one HDMI and one DP port (actually PowerColor
Go Green) can definitely drive three screens using 1x HDMI->DVI converter +
2xDVI. Afaik it's only possible to drive such a setup if all screens use the
same clock frequency, because there are only two independent clock
generators. And it works with the opensource driver only.
I filed a bug report once, but I can't find it right now. The third screen
was distorted when used, but I think Dave fixed it by applying an old patch.

Regards
Marcel


On Sun, Sep 19, 2010 at 8:05 PM, Dave Airlie  wrote:


On Mon, Sep 20, 2010 at 8:36 AM, Felix Blanke 
wrote:

Yeah.

I have buyed a third monitor and now need a video card for it :)

I want to buy a HD 5770 (flex-edition from sapphire) to use 3 monitors

via DVI.

Open-source would be mutch nicer to use then the closed source driver :)

Only if you use active displayport->dvi convertors.

Dave.
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati





___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


[Bug 29255] DisplayPort output distorted

2010-09-19 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=29255

--- Comment #23 from Andreas Demmer  2010-09-19 
23:43:56 PDT ---
I just tried to switch the internal LVDS off. Instantly, the external display
shows a correct picture. At least a way to make use of a projector.

But running the internal and an external display at the same time still needs
to be fixed.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


Re: [PATCH 5/6] radeon: complete UTS and DFS even when a scratch BO is not necessary

2010-09-19 Thread Karl Tomlinson
Updated to apply cleanly after the corrected part 4.
>From 89f42d148e826a0f774256fedc1ebce02cd8be3a Mon Sep 17 00:00:00 2001
From: Karl Tomlinson 
Date: Sun, 22 Aug 2010 22:28:06 +1200
Subject: [PATCH 5/6] radeon: complete UTS and DFS even when a scratch BO is not 
necessary

Turns on the big-endian paths even for little-endian systems, and adds
similar paths to the r6xx/r7xx functions.

This makes UTS and DFS reliable, which will let PrepareAccess (with
mixed pixmaps) choose to fail based on whether the pixmap is in VRAM
(to avoid CPU reads).
---
 src/r600_exa.c |  110 
 src/radeon_exa_funcs.c |   72 ---
 2 files changed, 82 insertions(+), 100 deletions(-)

diff --git a/src/r600_exa.c b/src/r600_exa.c
index 9b7a0c9..8544034 100644
--- a/src/r600_exa.c
+++ b/src/r600_exa.c
@@ -1772,13 +1772,18 @@ R600UploadToScreenCS(PixmapPtr pDst, int x, int y, int 
w, int h,
 RADEONInfoPtr info = RADEONPTR(pScrn);
 struct radeon_accel_state *accel_state = info->accel_state;
 struct radeon_exa_pixmap_priv *driver_priv;
-struct radeon_bo *scratch;
+struct radeon_bo *scratch = NULL;
+struct radeon_bo *copy_dst;
+unsigned char *dst;
 unsigned size;
 uint32_t dst_domain;
 int bpp = pDst->drawable.bitsPerPixel;
 uint32_t scratch_pitch = RADEON_ALIGN(w * bpp / 8, 256);
+uint32_t copy_pitch;
 uint32_t src_pitch_hw = scratch_pitch / (bpp / 8);
 uint32_t dst_pitch_hw = exaGetPixmapPitch(pDst) / (bpp / 8);
+int ret;
+Bool flush = TRUE;
 Bool r;
 int i;
 struct r600_accel_object src_obj, dst_obj;
@@ -1788,15 +1793,19 @@ R600UploadToScreenCS(PixmapPtr pDst, int x, int y, int 
w, int h,
 
 driver_priv = exaGetPixmapDriverPrivate(pDst);
 
-/* If we know the BO won't be busy, don't bother */
-if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs) &&
-   !radeon_bo_is_busy(driver_priv->bo, &dst_domain))
-   return FALSE;
+/* If we know the BO won't be busy, don't bother with a scratch */
+copy_dst = driver_priv->bo;
+copy_pitch = pDst->devKind;
+if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
+   flush = FALSE;
+   if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain))
+   goto copy;
+}
 
 size = scratch_pitch * h;
 scratch = radeon_bo_open(info->bufmgr, 0, size, 0, RADEON_GEM_DOMAIN_GTT, 
0);
 if (scratch == NULL) {
-   return FALSE;
+   goto copy;
 }
 
 src_obj.pitch = src_pitch_hw;
@@ -1821,33 +1830,45 @@ R600UploadToScreenCS(PixmapPtr pDst, int x, int y, int 
w, int h,
   &dst_obj,
   accel_state->copy_vs_offset, 
accel_state->copy_ps_offset,
   3, 0x)) {
-r = FALSE;
-goto out;
+goto copy;
 }
+copy_dst = scratch;
+copy_pitch = scratch_pitch;
+flush = FALSE;
+
+copy:
+if (flush)
+   radeon_cs_flush_indirect(pScrn);
 
-r = radeon_bo_map(scratch, 0);
-if (r) {
+ret = radeon_bo_map(copy_dst, 0);
+if (ret) {
 r = FALSE;
 goto out;
 }
 r = TRUE;
 size = w * bpp / 8;
+dst = copy_dst->ptr;
+if (copy_dst == driver_priv->bo)
+   dst += y * copy_pitch + x * bpp / 8;
 for (i = 0; i < h; i++) {
-memcpy(scratch->ptr + i * scratch_pitch, src, size);
+memcpy(dst + i * copy_pitch, src, size);
 src += src_pitch;
 }
-radeon_bo_unmap(scratch);
+radeon_bo_unmap(copy_dst);
 
-if (info->accel_state->vsync)
-   RADEONVlineHelperSet(pScrn, x, y, x + w, y + h);
+if (copy_dst == scratch) {
+   if (info->accel_state->vsync)
+   RADEONVlineHelperSet(pScrn, x, y, x + w, y + h);
 
-/* blit from gart to vram */
-R600DoPrepareCopy(pScrn);
-R600AppendCopyVertex(pScrn, 0, 0, x, y, w, h);
-R600DoCopyVline(pDst);
+   /* blit from gart to vram */
+   R600DoPrepareCopy(pScrn);
+   R600AppendCopyVertex(pScrn, 0, 0, x, y, w, h);
+   R600DoCopyVline(pDst);
+}
 
 out:
-radeon_bo_unref(scratch);
+if (scratch)
+   radeon_bo_unref(scratch);
 return r;
 }
 
@@ -1859,13 +1880,17 @@ R600DownloadFromScreenCS(PixmapPtr pSrc, int x, int y, 
int w,
 RADEONInfoPtr info = RADEONPTR(pScrn);
 struct radeon_accel_state *accel_state = info->accel_state;
 struct radeon_exa_pixmap_priv *driver_priv;
-struct radeon_bo *scratch;
+struct radeon_bo *scratch = NULL;
+struct radeon_bo *copy_src;
 unsigned size;
 uint32_t src_domain = 0;
 int bpp = pSrc->drawable.bitsPerPixel;
 uint32_t scratch_pitch = RADEON_ALIGN(w * bpp / 8, 256);
+uint32_t copy_pitch;
 uint32_t dst_pitch_hw = scratch_pitch / (bpp / 8);
 uint32_t src_pitch_hw = exaGetPixmapPitch(pSrc) / (bpp / 8);
+int ret;
+Bool flush = FALSE;
 Bool r;
 struct r600_accel_object src_obj, dst_obj;
 
@@ -1874,24 +1899,28 @@ R

Re: [PATCH 4/6] radeon: complete big endian UTS and DFS even when scratch allocation fails

2010-09-19 Thread Karl Tomlinson
Fixed up a pSrc/pDst typo in the previous patch, as discovered by
Michel.  http://lists.x.org/archives/xorg-driver-ati/2010-August/016956.html

>From a79f8aef8d420cd6606db06eba654dd8d4677d00 Mon Sep 17 00:00:00 2001
From: Karl Tomlinson 
Date: Sun, 22 Aug 2010 21:02:45 +1200
Subject: [PATCH 4/6] radeon: complete big endian UTS and DFS even when scratch 
allocation fails.

On big endian systems, PrepareAccess will fail when byte-swapping is
required so UploadToScreen and DownloadFromScreen cannot rely on
fallback to PrepareAccess.

When scratch BO space allocation fails, this patch merely adds simple
fallback to direct CPU access without any GPU blit.  This sometimes
requires a CS flush even in UploadToScreen.
(No allocation retry after a flush is added here.)
---
 src/radeon_exa_funcs.c |  120 +--
 1 files changed, 84 insertions(+), 36 deletions(-)

diff --git a/src/radeon_exa_funcs.c b/src/radeon_exa_funcs.c
index d02c787..f629c8e 100644
--- a/src/radeon_exa_funcs.c
+++ b/src/radeon_exa_funcs.c
@@ -459,7 +459,8 @@ RADEONUploadToScreenCS(PixmapPtr pDst, int x, int y, int w, 
int h,
 ScreenPtr pScreen = pDst->drawable.pScreen;
 RINFO_FROM_SCREEN(pScreen);
 struct radeon_exa_pixmap_priv *driver_priv;
-struct radeon_bo *scratch;
+struct radeon_bo *scratch = NULL;
+struct radeon_bo *copy_dst;
 unsigned char *dst;
 unsigned size;
 uint32_t datatype = 0;
@@ -467,7 +468,12 @@ RADEONUploadToScreenCS(PixmapPtr pDst, int x, int y, int 
w, int h,
 uint32_t dst_pitch_offset;
 unsigned bpp = pDst->drawable.bitsPerPixel;
 uint32_t scratch_pitch = RADEON_ALIGN(w * bpp / 8, 64);
+uint32_t copy_pitch;
 uint32_t swap = RADEON_HOST_DATA_SWAP_NONE;
+int ret;
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+Bool flush = TRUE;
+#endif
 Bool r;
 int i;
 
@@ -490,54 +496,78 @@ RADEONUploadToScreenCS(PixmapPtr pDst, int x, int y, int 
w, int h,
 #endif
 
 /* If we know the BO won't be busy, don't bother */
-if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs) &&
-   !radeon_bo_is_busy(driver_priv->bo, &dst_domain)) {
 #if X_BYTE_ORDER == X_BIG_ENDIAN
-   /* Can't return FALSE here if we need to swap bytes */
-   if (swap != RADEON_HOST_DATA_SWAP_NONE &&
-   driver_priv->bo != info->front_bo) {
-   scratch = driver_priv->bo;
-   scratch_pitch = pDst->devKind;
-   goto copy;
-   }
+copy_dst = driver_priv->bo;
+copy_pitch = pDst->devKind;
 #endif
-   return FALSE;
+if (!radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+   flush = FALSE;
+#endif
+   if (!radeon_bo_is_busy(driver_priv->bo, &dst_domain)) {
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+   /* Can't return FALSE here if we need to swap bytes */
+   if (swap != RADEON_HOST_DATA_SWAP_NONE &&
+   driver_priv->bo != info->front_bo) {
+   goto copy;
+   }
+#endif
+   return FALSE;
+   }
 }
 
 size = scratch_pitch * h;
 scratch = radeon_bo_open(info->bufmgr, 0, size, 0, RADEON_GEM_DOMAIN_GTT, 
0);
 if (scratch == NULL) {
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+   if (swap != RADEON_HOST_DATA_SWAP_NONE &&
+   driver_priv->bo != info->front_bo) {
+   goto copy;
+   }
+#endif
return FALSE;
 }
 radeon_cs_space_reset_bos(info->cs);
 radeon_add_pixmap(info->cs, pDst, 0, RADEON_GEM_DOMAIN_VRAM);
 radeon_cs_space_add_persistent_bo(info->cs, scratch, 
RADEON_GEM_DOMAIN_GTT, 0);
-r = radeon_cs_space_check(info->cs);
-if (r) {
+ret = radeon_cs_space_check(info->cs);
+if (ret) {
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+   if (swap != RADEON_HOST_DATA_SWAP_NONE &&
+   driver_priv->bo != info->front_bo) {
+   goto copy;
+   }
+#endif
 r = FALSE;
 goto out;
 }
-
+copy_dst = scratch;
+copy_pitch = scratch_pitch;
 #if X_BYTE_ORDER == X_BIG_ENDIAN
+flush = FALSE;
+
 copy:
+if (flush)
+   radeon_cs_flush_indirect(pScrn);
 #endif
-r = radeon_bo_map(scratch, 0);
-if (r) {
+
+ret = radeon_bo_map(copy_dst, 0);
+if (ret) {
 r = FALSE;
 goto out;
 }
 r = TRUE;
 size = w * bpp / 8;
-dst = scratch->ptr;
-if (scratch == driver_priv->bo)
-   dst += y * scratch_pitch + x * bpp / 8;
+dst = copy_dst->ptr;
+if (copy_dst == driver_priv->bo)
+   dst += y * copy_pitch + x * bpp / 8;
 for (i = 0; i < h; i++) {
-RADEONCopySwap(dst + i * scratch_pitch, (uint8_t*)src, size, swap);
+RADEONCopySwap(dst + i * copy_pitch, (uint8_t*)src, size, swap);
 src += src_pitch;
 }
-radeon_bo_unmap(scratch);
+radeon_bo_unmap(copy_dst);
 
-if (scratch != driver_priv->bo) {
+if (copy_dst == scratch) {
RADEONGetDatatypeBpp(pDst->drawable.bitsPerPixel, &datatype);
RADEONGetPixmapOffsetPitch(pDst, 

Re: Eyefinity support

2010-09-19 Thread ISHIKAWA Mutsumi
> In  
>   Corbin Simpson  wrote:
>>
>> Do you mean support for 3 monitors? That should already work, unless I
>> missed something.

 It means 4 monitor (or above) are suppoted too ? (Eyefinity 5 or 6
 should run on current ati driver ?)

 I got a HD5770 card with Eyefinity 5 support (it has 5 mini DP port).
 And I tested 4 monitors setting with the card
   * 2 with miniDP -> DVI passive convertor
   * 2 with miniDP -> DVI active convertor
   * All 4 monitors have same resolutions 1920x1200

 First 3 of 4 monitors are works fine, but 4th monitor only show
 garbage with KMS problem (it is broken with and withoit X driver).

 https://bugs.freedesktop.org/show_bug.cgi?id=29928

-- 
ISHIKAWA Mutsumi
 , , 
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


Re: Eyefinity support

2010-09-19 Thread Marcel Schaal
Hi,

a Radeon HD 5750 with two DVI, one HDMI and one DP port (actually PowerColor
Go Green) can definitely drive three screens using 1x HDMI->DVI converter +
2xDVI. Afaik it's only possible to drive such a setup if all screens use the
same clock frequency, because there are only two independent clock
generators. And it works with the opensource driver only.
I filed a bug report once, but I can't find it right now. The third screen
was distorted when used, but I think Dave fixed it by applying an old patch.

Regards
Marcel


On Sun, Sep 19, 2010 at 8:05 PM, Dave Airlie  wrote:

> On Mon, Sep 20, 2010 at 8:36 AM, Felix Blanke 
> wrote:
> > Yeah.
> >
> > I have buyed a third monitor and now need a video card for it :)
> >
> > I want to buy a HD 5770 (flex-edition from sapphire) to use 3 monitors
> via DVI.
> > Open-source would be mutch nicer to use then the closed source driver :)
>
> Only if you use active displayport->dvi convertors.
>
> Dave.
> ___
> xorg-driver-ati mailing list
> xorg-driver-ati@lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-driver-ati
>
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


Re: Eyefinity support

2010-09-19 Thread Dave Airlie
On Mon, Sep 20, 2010 at 8:36 AM, Felix Blanke  wrote:
> Yeah.
>
> I have buyed a third monitor and now need a video card for it :)
>
> I want to buy a HD 5770 (flex-edition from sapphire) to use 3 monitors via 
> DVI.
> Open-source would be mutch nicer to use then the closed source driver :)

Only if you use active displayport->dvi convertors.

Dave.
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


Re: Eyefinity support

2010-09-19 Thread Felix Blanke
Yeah.

I have buyed a third monitor and now need a video card for it :)

I want to buy a HD 5770 (flex-edition from sapphire) to use 3 monitors via DVI.
Open-source would be mutch nicer to use then the closed source driver :)

Anyone know if that setup will work?


Regards,
Felix

On 19. September 2010 - 14:12, Corbin Simpson wrote:
> Date: Sun, 19 Sep 2010 14:12:27 -0700
> From: Corbin Simpson 
> To: Felix Blanke 
> Cc: xorg-driver-ati@lists.x.org
> Subject: Re: Eyefinity support
> 
>Do you mean support for 3 monitors? That should already work, unless I
>missed something.
> 
>Sending from a mobile, pardon the brevity. ~ C.
> 
>On Sep 19, 2010 7:05 AM, "Felix Blanke" <[1]felixbla...@gmail.com>
>wrote:
>> Hi,
>>
>> does the xorg-ati driver currently supports eyefinity? Or will it
>support eyefinity
>> in the near future?
>> Especially for the HD 5770.
>>
>>
>> Thanks for your help!
>>
>>
>>
>> Regards,
>> Felix
>> ___
>> xorg-driver-ati mailing list
>> [2]xorg-driver-...@lists.x.org
>> [3]http://lists.x.org/mailman/listinfo/xorg-driver-ati
> 
> References
> 
>1. mailto:felixbla...@gmail.com
>2. mailto:xorg-driver-ati@lists.x.org
>3. http://lists.x.org/mailman/listinfo/xorg-driver-ati
---end quoted text---
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


Re: Eyefinity support

2010-09-19 Thread Corbin Simpson
Do you mean support for 3 monitors? That should already work, unless I
missed something.

Sending from a mobile, pardon the brevity. ~ C.

On Sep 19, 2010 7:05 AM, "Felix Blanke"  wrote:
> Hi,
>
> does the xorg-ati driver currently supports eyefinity? Or will it support
eyefinity
> in the near future?
> Especially for the HD 5770.
>
>
> Thanks for your help!
>
>
>
> Regards,
> Felix
> ___
> xorg-driver-ati mailing list
> xorg-driver-ati@lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-driver-ati
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


[PATCH] radeon: proper DRI2 pending events handling when client gone. (v4)

2010-09-19 Thread Oldřich Jedlička
Properly handle asynchronous DRI2 events for disconnected clients.
Track client's pending requests and mark them as invalid when the
client disconnects.

This is based on the version from Alban Browaeys in bug #29065.

v1 (Alban Browaeys): Based upon a detailed explanation from Oldřich
Jedlička and comments from Christopher James Halse Rogers.
on http://lists.x.org/archives/xorg-driver-ati/2010-August/016780.html .

v2: Updated version to apply on master. Removed unnecessary
client_index field from _DRI2FrameEvent. Added freeing/removing from
list to failed paths of radeon_dri2_schedule_wait_msc and
radeon_dri2_schedule_swap.

v3: Adopt to older xorg-server that doesn't have dixRegisterPrivateKey.

v4: Conditional include of list.h, unreachable return removed.
---
 src/radeon_dri2.c |  155 
 1 files changed, 131 insertions(+), 24 deletions(-)

diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index ed7fdd6..742bd42 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -38,6 +38,10 @@
 #include "radeon_dri2.h"
 #include "radeon_version.h"
 
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,7,99,902, 0)
+#include "list.h"
+#endif
+
 #ifdef RADEON_DRI2
 
 #include "radeon_bo_gem.h"
@@ -376,7 +380,6 @@ enum DRI2FrameEventType {
 typedef struct _DRI2FrameEvent {
 XID drawable_id;
 ClientPtr client;
-int client_index;
 enum DRI2FrameEventType type;
 int frame;
 
@@ -385,8 +388,86 @@ typedef struct _DRI2FrameEvent {
 void *event_data;
 DRI2BufferPtr front;
 DRI2BufferPtr back;
+
+Bool valid;
+
+struct list link;
 } DRI2FrameEventRec, *DRI2FrameEventPtr;
 
+typedef struct _DRI2ClientEvents {
+struct list   reference_list;
+} DRI2ClientEventsRec, *DRI2ClientEventsPtr;
+
+#if HAS_DEVPRIVATEKEYREC
+
+static DevPrivateKeyRec DRI2ClientEventsPrivateKeyRec;
+#define DRI2ClientEventsPrivateKey (&DRI2ClientEventsPrivateKeyRec)
+
+#else
+
+static int DRI2ClientEventsPrivateKeyIndex;
+DevPrivateKey DRI2ClientEventsPrivateKey = &DRI2ClientEventsPrivateKeyIndex;
+
+#endif /* HAS_DEVPRIVATEKEYREC */
+
+#define GetDRI2ClientEvents(pClient)   ((DRI2ClientEventsPtr) \
+dixLookupPrivate(&(pClient)->devPrivates, DRI2ClientEventsPrivateKey))
+
+static int
+ListAddDRI2ClientEvents(ClientPtr client, struct list *entry)
+{
+DRI2ClientEventsPtr pClientPriv;
+pClientPriv = GetDRI2ClientEvents(client);
+
+if (!pClientPriv) {
+return BadAlloc;
+}
+
+list_add(entry, &pClientPriv->reference_list);
+return 0;
+}
+
+static void
+ListDelDRI2ClientEvents(ClientPtr client, struct list *entry)
+{
+DRI2ClientEventsPtr pClientPriv;
+pClientPriv = GetDRI2ClientEvents(client);
+
+if (!pClientPriv) {
+return;
+}
+list_del(entry);
+}
+
+static void
+radeon_dri2_client_state_changed(CallbackListPtr *ClientStateCallback, pointer 
data, pointer calldata)
+{
+DRI2ClientEventsPtr pClientEventsPriv;
+DRI2FrameEventPtr ref;
+NewClientInfoRec *clientinfo = calldata;
+ClientPtr pClient = clientinfo->client;
+pClientEventsPriv = GetDRI2ClientEvents(pClient);
+
+switch (pClient->clientState) {
+case ClientStateInitial:
+list_init(&pClientEventsPriv->reference_list);
+break;
+case ClientStateRunning:
+break;
+
+case ClientStateRetained:
+case ClientStateGone:
+if (pClientEventsPriv) {
+list_for_each_entry(ref, &pClientEventsPriv->reference_list, link) 
{
+ref->valid = FALSE;
+}
+}
+break;
+default:
+break;
+}
+}
+
 static void
 radeon_dri2_ref_buffer(BufferPtr buffer)
 {
@@ -416,28 +497,17 @@ void radeon_dri2_frame_event_handler(unsigned int frame, 
unsigned int tv_sec,
 BoxRec box;
 RegionRec region;
 
+if (!event->valid)
+goto cleanup;
+
 status = dixLookupDrawable(&drawable, event->drawable_id, serverClient,
M_ANY, DixWriteAccess);
-if (status != Success) {
-radeon_dri2_unref_buffer(event->front);
-radeon_dri2_unref_buffer(event->back);
-free(event);
-return;
-}
+if (status != Success)
+goto cleanup;
 
 screen = drawable->pScreen;
 scrn = xf86Screens[screen->myNum];
-
-/* event->client may have quit between submitting a request
- * and this callback being triggered.
- *
- * Check our saved client pointer against the client in the saved client
- * slot.  This will catch almost all cases where the client that requested
- * SwapBuffers has gone away, and will guarantee that there is at least a 
- * valid client to write the BufferSwapComplete event to.
- */
-client = event->client == clients[event->client_index] ? 
-event->client : NULL;
+client = event->client;
 
 switch (event->type) {
 case DRI2_FLIP:
@@ -453,8 +523,6 @@ void radeon_dri2_frame_event_handler(unsigned int frame, 
unsign

Bug#597358: xserver-xorg-video-radeon: Screen brightness flickers when KMS is enabled

2010-09-19 Thread Aaron Small
Package: xserver-xorg-video-radeon
Version: 1:6.13.1-2
Severity: normal


When KMS is enabled, the screen is mostly correct all the time, but the
brightness for either the entire screen, or one horizontal line
flickers, maybe two to three times per second. Sometimes the change in
brightness is just noticeable, and sometimes it is strong enough to look
like a horizontal line the full width of the display becomes white. The
very strong flickers seem to only happen with a single line, the
whole-display flickers are always fairly weak, but still noticeable.

The flickering happens all the time when KMS is enabled. Reboot and
suspend/resume have no effect. When KMS is disabled, there is no
problem, I never see flickering like this.


-- Package-specific info:
/var/lib/x11/X.roster does not exist.

/var/lib/x11/X.md5sum does not exist.

X server symlink status:
lrwxrwxrwx 1 root root 13 Dec 28  2006 /etc/X11/X -> /usr/bin/Xorg
-rwxr-xr-x 1 root root 1725304 Aug 24 11:04 /usr/bin/Xorg

/var/lib/x11/xorg.conf.roster does not exist.

VGA-compatible devices on PCI bus:
01:00.0 VGA compatible controller: ATI Technologies Inc M56P [Radeon Mobility 
X1600]

/var/lib/x11/xorg.conf.md5sum does not exist.

Xorg X server configuration file status:
-rw-r--r-- 1 root root 3132 Aug  7 22:06 /etc/X11/xorg.conf

Contents of /etc/X11/xorg.conf:
# /etc/X11/xorg.conf (xorg X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
# (Type "man /etc/X11/xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#   sudo dpkg-reconfigure -phigh xserver-xorg

Section "Files"
FontPath"/usr/share/fonts/X11/misc"
FontPath"/usr/X11R6/lib/X11/fonts/misc"
FontPath"/usr/share/fonts/X11/cyrillic"
FontPath"/usr/X11R6/lib/X11/fonts/cyrillic"
FontPath"/usr/share/fonts/X11/100dpi/:unscaled"
FontPath"/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
FontPath"/usr/share/fonts/X11/75dpi/:unscaled"
FontPath"/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath"/usr/share/fonts/X11/Type1"
FontPath"/usr/X11R6/lib/X11/fonts/Type1"
FontPath"/usr/share/fonts/X11/100dpi"
FontPath"/usr/X11R6/lib/X11/fonts/100dpi"
FontPath"/usr/share/fonts/X11/75dpi"
FontPath"/usr/X11R6/lib/X11/fonts/75dpi"
# path to defoma fonts
FontPath"/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
Load"i2c"
Load"bitmap"
Load"ddc"
Load"dri"
Load"extmod"
Load"freetype"
Load"glx"
Load"int10"
Load"vbe"
EndSection

Section "InputDevice"
Identifier  "Generic Keyboard"
Driver  "kbd"
Option  "CoreKeyboard"
Option  "XkbRules"  "xorg"
Option  "XkbModel"  "pc104"
Option  "XkbLayout" "us"
EndSection

Section "InputDevice"
Identifier  "Configured Mouse"
Driver  "mouse"
Option  "CorePointer"
Option  "Device""/dev/input/mice"
Option  "Protocol"  "ImPS/2"
Option  "Emulate3Buttons"   "true"
EndSection

Section "InputDevice"
Identifier  "Touchpad"
Driver  "synaptics"
Option  "AlwaysCore"
Option  "device""/dev/input/mouse0"
Option  "Protocol"  "auto-dev"
Option  "SHMConfig" "on"
Option  "TapButton2""3"
Option  "TapButton3""2"
EndSection

Section "Device"
Identifier  "Generic Video Card"
Driver  "ati"
BusID   "PCI:1:0:0"
EndSection

Section "Monitor"
Identifier  "Color LCD"
Option  "DPMS"
HorizSync   28-72
VertRefresh 43-60
EndSection

Section "Screen"
Identifier  "Default Screen"
Device  "Generic Video Card"
Monitor "Color LCD"
DefaultDepth24
SubSection "Display"
Depth   1
Modes   "1440x900"
EndSubSection
SubSection "Display"
Depth   4
Modes   "1440x900"
EndSubSection
SubSection "Display"
Depth   8
  

Eyefinity support

2010-09-19 Thread Felix Blanke
Hi,

does the xorg-ati driver currently supports eyefinity? Or will it support 
eyefinity
in the near future?
Especially for the HD 5770.


Thanks for your help!



Regards,
Felix
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati


[Bug 29255] DisplayPort output distorted

2010-09-19 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=29255

--- Comment #22 from James Brechtel  2010-09-19 06:21:19 
PDT ---
Hi, I have the same problem on my Envy 14, but thanks to a tip from the helpful
folks in #radeon on FreeNode I found that if I turn off my laptop panel with
xrandr then my external display immediately becomes ungarbled.

Specifically, the command:

xrandr --output LVDS-1 --off

(and then, because it starts in mirror mode with a non-native resolution of my
monitor)

xrandr --output DisplayPort-0 --auto



I'm using Arch and am selecting the ATI card via vgaswitcheroo first.  Here's
my uname-a


Linux bender 2.6.35-ARCH #1 SMP PREEMPT Fri Aug 27 17:14:28 CEST 2010 x86_64
Intel(R) Core(TM) i5 CPU M 450 @ 2.40GHz GenuineIntel GNU/Linux

Package versions:

local/xorg-server 1.8.1.902-1
local/xf86-video-ati 6.13.1-1 (xorg-video-drivers)
local/ati-dri 7.8.2-1

Hope this helps anyone who may find this trade-off suitable until a proper fix
is found.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati