diff mbox

[libdrm] radeon: Fix 1D tiling for CIK

Message ID 1379512267-9895-1-git-send-email-michel@daenzer.net (mailing list archive)
State New, archived
Headers show

Commit Message

Michel Dänzer Sept. 18, 2013, 1:51 p.m. UTC
From: Michel Dänzer <michel.daenzer@amd.com>

The main difference is that the tiling mode index changed for 1D tiled
depth/stencil surfaces.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
 include/drm/radeon_drm.h | 15 +++++++++++++++
 radeon/radeon_surface.c  | 15 ++++++++++++---
 2 files changed, 27 insertions(+), 3 deletions(-)

Comments

Alex Deucher Sept. 18, 2013, 3:54 p.m. UTC | #1
On Wed, Sep 18, 2013 at 9:51 AM, Michel Dänzer <michel@daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer@amd.com>
>
> The main difference is that the tiling mode index changed for 1D tiled
> depth/stencil surfaces.
>
> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>

One comment below, other than that,

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  include/drm/radeon_drm.h | 15 +++++++++++++++
>  radeon/radeon_surface.c  | 15 ++++++++++++---
>  2 files changed, 27 insertions(+), 3 deletions(-)
>
> diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
> index 86cef15..533c3dc 100644
> --- a/include/drm/radeon_drm.h
> +++ b/include/drm/radeon_drm.h
> @@ -1004,4 +1004,19 @@ struct drm_radeon_info {
>  #define SI_TILE_MODE_DEPTH_STENCIL_2D_4AA      3
>  #define SI_TILE_MODE_DEPTH_STENCIL_2D_8AA      2
>
> +#define CIK_TILE_MODE_COLOR_LINEAR_ALIGNED     8
> +#define CIK_TILE_MODE_COLOR_1D                 13
> +#define CIK_TILE_MODE_COLOR_1D_SCANOUT         9
> +#define CIK_TILE_MODE_COLOR_2D_8BPP            14
> +#define CIK_TILE_MODE_COLOR_2D_16BPP           15
> +#define CIK_TILE_MODE_COLOR_2D_32BPP           16
> +#define CIK_TILE_MODE_COLOR_2D_64BPP           17
> +#define CIK_TILE_MODE_COLOR_2D_SCANOUT_16BPP   11
> +#define CIK_TILE_MODE_COLOR_2D_SCANOUT_32BPP   12
> +#define CIK_TILE_MODE_DEPTH_STENCIL_1D         5
> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D         0
> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D_2AA     3
> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D_4AA     3
> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D_8AA     2
> +

Can you send a patch to add these to radeon_drm.h in the kernel as well?

>  #endif
> diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
> index 818e26a..1710e34 100644
> --- a/radeon/radeon_surface.c
> +++ b/radeon/radeon_surface.c
> @@ -1382,10 +1382,16 @@ static int si_surface_sanity(struct radeon_surface_manager *surf_man,
>          break;
>      case RADEON_SURF_MODE_1D:
>          if (surf->flags & RADEON_SURF_SBUFFER) {
> -            *stencil_tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
> +            if (surf_man->family >= CHIP_BONAIRE)
> +                *stencil_tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
> +            else
> +                *stencil_tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>          }
>          if (surf->flags & RADEON_SURF_ZBUFFER) {
> -            *tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
> +            if (surf_man->family >= CHIP_BONAIRE)
> +                *tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
> +            else
> +                *tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>          } else if (surf->flags & RADEON_SURF_SCANOUT) {
>              *tile_mode = SI_TILE_MODE_COLOR_1D_SCANOUT;
>          } else {
> @@ -1643,7 +1649,10 @@ static int si_surface_init_2d(struct radeon_surface_manager *surf_man,
>                  tile_mode = SI_TILE_MODE_COLOR_1D_SCANOUT;
>                  break;
>              case SI_TILE_MODE_DEPTH_STENCIL_2D:
> -                tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
> +                if (surf_man->family >= CHIP_BONAIRE)
> +                    tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
> +                else
> +                    tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>                  break;
>              default:
>                  return -EINVAL;
> --
> 1.8.4.rc3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
Christian König Sept. 18, 2013, 3:56 p.m. UTC | #2
Am 18.09.2013 17:54, schrieb Alex Deucher:
> On Wed, Sep 18, 2013 at 9:51 AM, Michel Dänzer <michel@daenzer.net> wrote:
>> From: Michel Dänzer <michel.daenzer@amd.com>
>>
>> The main difference is that the tiling mode index changed for 1D tiled
>> depth/stencil surfaces.
>>
>> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
> One comment below, other than that,
>
> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
>
>> ---
>>   include/drm/radeon_drm.h | 15 +++++++++++++++
>>   radeon/radeon_surface.c  | 15 ++++++++++++---
>>   2 files changed, 27 insertions(+), 3 deletions(-)
>>
>> diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
>> index 86cef15..533c3dc 100644
>> --- a/include/drm/radeon_drm.h
>> +++ b/include/drm/radeon_drm.h
>> @@ -1004,4 +1004,19 @@ struct drm_radeon_info {
>>   #define SI_TILE_MODE_DEPTH_STENCIL_2D_4AA      3
>>   #define SI_TILE_MODE_DEPTH_STENCIL_2D_8AA      2
>>
>> +#define CIK_TILE_MODE_COLOR_LINEAR_ALIGNED     8
>> +#define CIK_TILE_MODE_COLOR_1D                 13
>> +#define CIK_TILE_MODE_COLOR_1D_SCANOUT         9
>> +#define CIK_TILE_MODE_COLOR_2D_8BPP            14
>> +#define CIK_TILE_MODE_COLOR_2D_16BPP           15
>> +#define CIK_TILE_MODE_COLOR_2D_32BPP           16
>> +#define CIK_TILE_MODE_COLOR_2D_64BPP           17
>> +#define CIK_TILE_MODE_COLOR_2D_SCANOUT_16BPP   11
>> +#define CIK_TILE_MODE_COLOR_2D_SCANOUT_32BPP   12
>> +#define CIK_TILE_MODE_DEPTH_STENCIL_1D         5
>> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D         0
And by the way, that looks a bit strange:
>> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D_2AA     3
>> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D_4AA     3


Christian.

>> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D_8AA     2
>> +
> Can you send a patch to add these to radeon_drm.h in the kernel as well?
>
>>   #endif
>> diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
>> index 818e26a..1710e34 100644
>> --- a/radeon/radeon_surface.c
>> +++ b/radeon/radeon_surface.c
>> @@ -1382,10 +1382,16 @@ static int si_surface_sanity(struct radeon_surface_manager *surf_man,
>>           break;
>>       case RADEON_SURF_MODE_1D:
>>           if (surf->flags & RADEON_SURF_SBUFFER) {
>> -            *stencil_tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>> +            if (surf_man->family >= CHIP_BONAIRE)
>> +                *stencil_tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
>> +            else
>> +                *stencil_tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>>           }
>>           if (surf->flags & RADEON_SURF_ZBUFFER) {
>> -            *tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>> +            if (surf_man->family >= CHIP_BONAIRE)
>> +                *tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
>> +            else
>> +                *tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>>           } else if (surf->flags & RADEON_SURF_SCANOUT) {
>>               *tile_mode = SI_TILE_MODE_COLOR_1D_SCANOUT;
>>           } else {
>> @@ -1643,7 +1649,10 @@ static int si_surface_init_2d(struct radeon_surface_manager *surf_man,
>>                   tile_mode = SI_TILE_MODE_COLOR_1D_SCANOUT;
>>                   break;
>>               case SI_TILE_MODE_DEPTH_STENCIL_2D:
>> -                tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>> +                if (surf_man->family >= CHIP_BONAIRE)
>> +                    tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
>> +                else
>> +                    tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>>                   break;
>>               default:
>>                   return -EINVAL;
>> --
>> 1.8.4.rc3
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
Alex Deucher Sept. 18, 2013, 4:02 p.m. UTC | #3
On Wed, Sep 18, 2013 at 11:56 AM, Christian König
<deathsimple@vodafone.de> wrote:
> Am 18.09.2013 17:54, schrieb Alex Deucher:
>
>> On Wed, Sep 18, 2013 at 9:51 AM, Michel Dänzer <michel@daenzer.net> wrote:
>>>
>>> From: Michel Dänzer <michel.daenzer@amd.com>
>>>
>>> The main difference is that the tiling mode index changed for 1D tiled
>>> depth/stencil surfaces.
>>>
>>> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
>>
>> One comment below, other than that,
>>
>> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
>>
>>> ---
>>>   include/drm/radeon_drm.h | 15 +++++++++++++++
>>>   radeon/radeon_surface.c  | 15 ++++++++++++---
>>>   2 files changed, 27 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
>>> index 86cef15..533c3dc 100644
>>> --- a/include/drm/radeon_drm.h
>>> +++ b/include/drm/radeon_drm.h
>>> @@ -1004,4 +1004,19 @@ struct drm_radeon_info {
>>>   #define SI_TILE_MODE_DEPTH_STENCIL_2D_4AA      3
>>>   #define SI_TILE_MODE_DEPTH_STENCIL_2D_8AA      2
>>>
>>> +#define CIK_TILE_MODE_COLOR_LINEAR_ALIGNED     8
>>> +#define CIK_TILE_MODE_COLOR_1D                 13
>>> +#define CIK_TILE_MODE_COLOR_1D_SCANOUT         9
>>> +#define CIK_TILE_MODE_COLOR_2D_8BPP            14
>>> +#define CIK_TILE_MODE_COLOR_2D_16BPP           15
>>> +#define CIK_TILE_MODE_COLOR_2D_32BPP           16
>>> +#define CIK_TILE_MODE_COLOR_2D_64BPP           17
>>> +#define CIK_TILE_MODE_COLOR_2D_SCANOUT_16BPP   11
>>> +#define CIK_TILE_MODE_COLOR_2D_SCANOUT_32BPP   12
>>> +#define CIK_TILE_MODE_DEPTH_STENCIL_1D         5
>>> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D         0
>
> And by the way, that looks a bit strange:
>
>>> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D_2AA     3
>>> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D_4AA     3
>

It's correct according to the tiling documentation.

Alex

>
>
> Christian.
>
>
>>> +#define CIK_TILE_MODE_DEPTH_STENCIL_2D_8AA     2
>>> +
>>
>> Can you send a patch to add these to radeon_drm.h in the kernel as well?
>>
>>>   #endif
>>> diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
>>> index 818e26a..1710e34 100644
>>> --- a/radeon/radeon_surface.c
>>> +++ b/radeon/radeon_surface.c
>>> @@ -1382,10 +1382,16 @@ static int si_surface_sanity(struct
>>> radeon_surface_manager *surf_man,
>>>           break;
>>>       case RADEON_SURF_MODE_1D:
>>>           if (surf->flags & RADEON_SURF_SBUFFER) {
>>> -            *stencil_tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>>> +            if (surf_man->family >= CHIP_BONAIRE)
>>> +                *stencil_tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
>>> +            else
>>> +                *stencil_tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>>>           }
>>>           if (surf->flags & RADEON_SURF_ZBUFFER) {
>>> -            *tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>>> +            if (surf_man->family >= CHIP_BONAIRE)
>>> +                *tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
>>> +            else
>>> +                *tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>>>           } else if (surf->flags & RADEON_SURF_SCANOUT) {
>>>               *tile_mode = SI_TILE_MODE_COLOR_1D_SCANOUT;
>>>           } else {
>>> @@ -1643,7 +1649,10 @@ static int si_surface_init_2d(struct
>>> radeon_surface_manager *surf_man,
>>>                   tile_mode = SI_TILE_MODE_COLOR_1D_SCANOUT;
>>>                   break;
>>>               case SI_TILE_MODE_DEPTH_STENCIL_2D:
>>> -                tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>>> +                if (surf_man->family >= CHIP_BONAIRE)
>>> +                    tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
>>> +                else
>>> +                    tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
>>>                   break;
>>>               default:
>>>                   return -EINVAL;
>>> --
>>> 1.8.4.rc3
>>>
>>> _______________________________________________
>>> dri-devel mailing list
>>> dri-devel@lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
>
diff mbox

Patch

diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
index 86cef15..533c3dc 100644
--- a/include/drm/radeon_drm.h
+++ b/include/drm/radeon_drm.h
@@ -1004,4 +1004,19 @@  struct drm_radeon_info {
 #define SI_TILE_MODE_DEPTH_STENCIL_2D_4AA	3
 #define SI_TILE_MODE_DEPTH_STENCIL_2D_8AA	2
 
+#define CIK_TILE_MODE_COLOR_LINEAR_ALIGNED	8
+#define CIK_TILE_MODE_COLOR_1D			13
+#define CIK_TILE_MODE_COLOR_1D_SCANOUT		9
+#define CIK_TILE_MODE_COLOR_2D_8BPP		14
+#define CIK_TILE_MODE_COLOR_2D_16BPP		15
+#define CIK_TILE_MODE_COLOR_2D_32BPP		16
+#define CIK_TILE_MODE_COLOR_2D_64BPP		17
+#define CIK_TILE_MODE_COLOR_2D_SCANOUT_16BPP	11
+#define CIK_TILE_MODE_COLOR_2D_SCANOUT_32BPP	12
+#define CIK_TILE_MODE_DEPTH_STENCIL_1D		5
+#define CIK_TILE_MODE_DEPTH_STENCIL_2D		0
+#define CIK_TILE_MODE_DEPTH_STENCIL_2D_2AA	3
+#define CIK_TILE_MODE_DEPTH_STENCIL_2D_4AA	3
+#define CIK_TILE_MODE_DEPTH_STENCIL_2D_8AA	2
+
 #endif
diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
index 818e26a..1710e34 100644
--- a/radeon/radeon_surface.c
+++ b/radeon/radeon_surface.c
@@ -1382,10 +1382,16 @@  static int si_surface_sanity(struct radeon_surface_manager *surf_man,
         break;
     case RADEON_SURF_MODE_1D:
         if (surf->flags & RADEON_SURF_SBUFFER) {
-            *stencil_tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
+            if (surf_man->family >= CHIP_BONAIRE)
+                *stencil_tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
+            else
+                *stencil_tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
         }
         if (surf->flags & RADEON_SURF_ZBUFFER) {
-            *tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
+            if (surf_man->family >= CHIP_BONAIRE)
+                *tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
+            else
+                *tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
         } else if (surf->flags & RADEON_SURF_SCANOUT) {
             *tile_mode = SI_TILE_MODE_COLOR_1D_SCANOUT;
         } else {
@@ -1643,7 +1649,10 @@  static int si_surface_init_2d(struct radeon_surface_manager *surf_man,
                 tile_mode = SI_TILE_MODE_COLOR_1D_SCANOUT;
                 break;
             case SI_TILE_MODE_DEPTH_STENCIL_2D:
-                tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
+                if (surf_man->family >= CHIP_BONAIRE)
+                    tile_mode = CIK_TILE_MODE_DEPTH_STENCIL_1D;
+                else
+                    tile_mode = SI_TILE_MODE_DEPTH_STENCIL_1D;
                 break;
             default:
                 return -EINVAL;