All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH xf86-video-ati 1/4] glamor: Allow depth 30 with Xorg >= 1.19.99.1
@ 2018-02-14 17:49 Michel Dänzer
       [not found] ` <20180214174930.5086-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Michel Dänzer @ 2018-02-14 17:49 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Michel Dänzer <michel.daenzer@amd.com>

Corresponding to amdgpu commit 6aee5770fb913713bb1b9a1af8f0d0892a66f21a.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
 man/radeon.man   | 2 +-
 src/radeon_kms.c | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/man/radeon.man b/man/radeon.man
index 889355bbb..dcebf5375 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -19,7 +19,7 @@ following features:
 .TP 2
 \(bu
 Full support for 8-, 15-, 16- and 24-bit pixel depths, and for 30-bit depth on Linux 3.16
-and later with EXA acceleration;
+and later;
 .TP
 \(bu
 RandR 1.2 and RandR 1.3 support;
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index bac98cb6e..25b889a67 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -1767,7 +1767,8 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
     if (!RADEONPreInitAccel_KMS(pScrn))              goto fail;
 
     /* Depth 30 not yet supported under glamor. */
-    if (pScrn->depth == 30 && info->use_glamor) {
+    if (pScrn->depth == 30 && info->use_glamor &&
+	xorgGetVersion() < XORG_VERSION_NUMERIC(1,19,99,1,0)) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 		   "Given depth (%d) is not supported under GLAMOR accel. Select EXA.\n",
 		   pScrn->depth);
-- 
2.16.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH xf86-video-ati 2/4] Don't use RADEONEntPriv in RADEONFreeRec
       [not found] ` <20180214174930.5086-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
@ 2018-02-14 17:49   ` Michel Dänzer
  2018-02-14 17:49   ` [PATCH xf86-video-ati 3/4] Don't call RADEONFreeRec from RADEONPreInit_KMS Michel Dänzer
  2018-02-14 17:49   ` [PATCH xf86-video-ati 4/4] Call RADEONFreeRec from RADEONFreeScreen_KMS even if info == NULL Michel Dänzer
  2 siblings, 0 replies; 5+ messages in thread
From: Michel Dänzer @ 2018-02-14 17:49 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Michel Dänzer <michel.daenzer@amd.com>

It crashes if info == NULL.

(Ported from amdgpu commits fb8444e731765588c0ff1e9053c1c7b73f5f0907 &
 cfccf4c4e7e5c73fe4040fabeb1b43283cf29b33)

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
 src/radeon_kms.c | 32 ++++++++++++++++++++------------
 1 file changed, 20 insertions(+), 12 deletions(-)

diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 25b889a67..6b1dc38b0 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -194,18 +194,33 @@ static Bool RADEONGetRec(ScrnInfoPtr pScrn)
 /* Free our private RADEONInfoRec */
 static void RADEONFreeRec(ScrnInfoPtr pScrn)
 {
+    DevUnion *pPriv;
     RADEONEntPtr pRADEONEnt;
     RADEONInfoPtr  info;
+    EntityInfoPtr pEnt;
 
-    if (!pScrn || !pScrn->driverPrivate) return;
+    if (!pScrn)
+	return;
 
     info = RADEONPTR(pScrn);
+    if (info) {
+	if (info->fbcon_pixmap)
+	    pScrn->pScreen->DestroyPixmap(info->fbcon_pixmap);
 
-    if (info->fbcon_pixmap)
-	pScrn->pScreen->DestroyPixmap(info->fbcon_pixmap);
+	if (info->accel_state) {
+	    free(info->accel_state);
+	    info->accel_state = NULL;
+	}
 
-    pRADEONEnt = RADEONEntPriv(pScrn);
+	pEnt = info->pEnt;
+	free(pScrn->driverPrivate);
+	pScrn->driverPrivate = NULL;
+    } else {
+	pEnt = xf86GetEntityInfo(pScrn->entityList[pScrn->numEntities - 1]);
+    }
 
+    pPriv = xf86GetEntityPrivate(pEnt->index, gRADEONEntityIndex);
+    pRADEONEnt = pPriv->ptr;
     if (pRADEONEnt->fd > 0) {
         DevUnion *pPriv;
         RADEONEntPtr pRADEONEnt;
@@ -225,14 +240,7 @@ static void RADEONFreeRec(ScrnInfoPtr pScrn)
         }
     }
 
-    if (info->accel_state) {
-	free(info->accel_state);
-	info->accel_state = NULL;
-    }
-
-    free(info->pEnt);
-    free(pScrn->driverPrivate);
-    pScrn->driverPrivate = NULL;
+    free(pEnt);
 }
 
 static void *
-- 
2.16.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH xf86-video-ati 3/4] Don't call RADEONFreeRec from RADEONPreInit_KMS
       [not found] ` <20180214174930.5086-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  2018-02-14 17:49   ` [PATCH xf86-video-ati 2/4] Don't use RADEONEntPriv in RADEONFreeRec Michel Dänzer
@ 2018-02-14 17:49   ` Michel Dänzer
  2018-02-14 17:49   ` [PATCH xf86-video-ati 4/4] Call RADEONFreeRec from RADEONFreeScreen_KMS even if info == NULL Michel Dänzer
  2 siblings, 0 replies; 5+ messages in thread
From: Michel Dänzer @ 2018-02-14 17:49 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Michel Dänzer <michel.daenzer@amd.com>

If the latter fails, Xorg will call RADEONFreeScreen_KMS, which calls
the former.

(Ported from amdgpu commit 103b7285845b786929fb509083c57e074c48f9be)

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
 src/radeon_kms.c | 31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 6b1dc38b0..06f7883e8 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -1712,7 +1712,7 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
         && info->pEnt->location.type != BUS_PLATFORM
 #endif
         )
-        goto fail;
+        return FALSE;
 
     pPriv = xf86GetEntityPrivate(pScrn->entityList[0],
 				 getRADEONEntityIndex());
@@ -1739,24 +1739,24 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
     pScrn->monitor     = pScrn->confScreen->monitor;
 
     if (!RADEONPreInitVisual(pScrn))
-	goto fail;
+	return FALSE;
 
     xf86CollectOptions(pScrn, NULL);
     if (!(info->Options = malloc(sizeof(RADEONOptions_KMS))))
-	goto fail;
+	return FALSE;
 
     memcpy(info->Options, RADEONOptions_KMS, sizeof(RADEONOptions_KMS));
     xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, info->Options);
 
     if (!RADEONPreInitWeight(pScrn))
-	goto fail;
+	return FALSE;
 
     if (!RADEONPreInitChipType_KMS(pScrn))
-        goto fail;
+        return FALSE;
 
     if (radeon_open_drm_master(pScrn) == FALSE) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Kernel modesetting setup failed\n");
-	goto fail;
+	return FALSE;
     }
 
     info->dri2.available = FALSE;
@@ -1765,14 +1765,15 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
     if (info->dri2.pKernelDRMVersion == NULL) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 		   "RADEONDRIGetVersion failed to get the DRM version\n");
-	goto fail;
+	return FALSE;
     }
 
     /* Get ScreenInit function */
     if (!xf86LoadSubModule(pScrn, "fb"))
 	return FALSE;
 
-    if (!RADEONPreInitAccel_KMS(pScrn))              goto fail;
+    if (!RADEONPreInitAccel_KMS(pScrn))
+	return FALSE;
 
     /* Depth 30 not yet supported under glamor. */
     if (pScrn->depth == 30 && info->use_glamor &&
@@ -1780,7 +1781,7 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 		   "Given depth (%d) is not supported under GLAMOR accel. Select EXA.\n",
 		   pScrn->depth);
-	goto fail;
+	return FALSE;
     }
 
     /* Depth 30 only supported since Linux 3.16 / kms driver minor version 39 */
@@ -1788,7 +1789,7 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 		   "Given depth (%d) is not supported. Kernel too old. Needs Linux 3.16+\n",
 		   pScrn->depth);
-	goto fail;
+	return FALSE;
     }
 
     radeon_drm_queue_init();
@@ -1901,7 +1902,7 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
 
     if (drmmode_pre_init(pScrn, &info->drmmode, pScrn->bitsPerPixel / 8) == FALSE) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Kernel modesetting setup failed\n");
-	goto fail;
+	return FALSE;
     }
 
     RADEONSetupCapabilities(pScrn);
@@ -1995,14 +1996,10 @@ Bool RADEONPreInit_KMS(ScrnInfoPtr pScrn, int flags)
 #endif
         ) {
       xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No modes.\n");
-      goto fail;
-   }
+      return FALSE;
+    }
 
     return TRUE;
- fail:
-    RADEONFreeRec(pScrn);
-    return FALSE;
-
 }
 
 static Bool RADEONCursorInit_KMS(ScreenPtr pScreen)
-- 
2.16.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH xf86-video-ati 4/4] Call RADEONFreeRec from RADEONFreeScreen_KMS even if info == NULL
       [not found] ` <20180214174930.5086-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  2018-02-14 17:49   ` [PATCH xf86-video-ati 2/4] Don't use RADEONEntPriv in RADEONFreeRec Michel Dänzer
  2018-02-14 17:49   ` [PATCH xf86-video-ati 3/4] Don't call RADEONFreeRec from RADEONPreInit_KMS Michel Dänzer
@ 2018-02-14 17:49   ` Michel Dänzer
       [not found]     ` <20180214174930.5086-4-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  2 siblings, 1 reply; 5+ messages in thread
From: Michel Dänzer @ 2018-02-14 17:49 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Michel Dänzer <michel.daenzer@amd.com>

It's safe now.

(Ported from amdgpu commit c9bd1399a13cea2e1331af2c826ca054b88db071)

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
 src/radeon_kms.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 06f7883e8..6e5bf7814 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -2206,14 +2206,9 @@ static Bool RADEONCloseScreen_KMS(ScreenPtr pScreen)
 
 void RADEONFreeScreen_KMS(ScrnInfoPtr pScrn)
 {
-    RADEONInfoPtr  info  = RADEONPTR(pScrn);
-
     xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
 		   "RADEONFreeScreen\n");
 
-    /* when server quits at PreInit, we don't need do this anymore*/
-    if (!info) return;
-
     RADEONFreeRec(pScrn);
 }
 
-- 
2.16.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH xf86-video-ati 4/4] Call RADEONFreeRec from RADEONFreeScreen_KMS even if info == NULL
       [not found]     ` <20180214174930.5086-4-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
@ 2018-02-14 18:07       ` Deucher, Alexander
  0 siblings, 0 replies; 5+ messages in thread
From: Deucher, Alexander @ 2018-02-14 18:07 UTC (permalink / raw)
  To: Michel Dänzer, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW


[-- Attachment #1.1: Type: text/plain, Size: 1567 bytes --]

Series is:

Reviewed-by: Alex Deucher <alexander.deucher-5C7GfCeVMHo@public.gmane.org>

________________________________
From: amd-gfx <amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org> on behalf of Michel Dänzer <michel-otUistvHUpPR7s880joybQ@public.gmane.org>
Sent: Wednesday, February 14, 2018 12:49:30 PM
To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: [PATCH xf86-video-ati 4/4] Call RADEONFreeRec from RADEONFreeScreen_KMS even if info == NULL

From: Michel Dänzer <michel.daenzer-5C7GfCeVMHo@public.gmane.org>

It's safe now.

(Ported from amdgpu commit c9bd1399a13cea2e1331af2c826ca054b88db071)

Signed-off-by: Michel Dänzer <michel.daenzer-5C7GfCeVMHo@public.gmane.org>
---
 src/radeon_kms.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 06f7883e8..6e5bf7814 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -2206,14 +2206,9 @@ static Bool RADEONCloseScreen_KMS(ScreenPtr pScreen)

 void RADEONFreeScreen_KMS(ScrnInfoPtr pScrn)
 {
-    RADEONInfoPtr  info  = RADEONPTR(pScrn);
-
     xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
                    "RADEONFreeScreen\n");

-    /* when server quits at PreInit, we don't need do this anymore*/
-    if (!info) return;
-
     RADEONFreeRec(pScrn);
 }

--
2.16.1

_______________________________________________
amd-gfx mailing list
amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

[-- Attachment #1.2: Type: text/html, Size: 2830 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-02-14 18:07 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-14 17:49 [PATCH xf86-video-ati 1/4] glamor: Allow depth 30 with Xorg >= 1.19.99.1 Michel Dänzer
     [not found] ` <20180214174930.5086-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
2018-02-14 17:49   ` [PATCH xf86-video-ati 2/4] Don't use RADEONEntPriv in RADEONFreeRec Michel Dänzer
2018-02-14 17:49   ` [PATCH xf86-video-ati 3/4] Don't call RADEONFreeRec from RADEONPreInit_KMS Michel Dänzer
2018-02-14 17:49   ` [PATCH xf86-video-ati 4/4] Call RADEONFreeRec from RADEONFreeScreen_KMS even if info == NULL Michel Dänzer
     [not found]     ` <20180214174930.5086-4-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
2018-02-14 18:07       ` Deucher, Alexander

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.