[PATCH] drm/radeon/kms/evergreen: set accel_enabled

Alex Deucher alexdeucher at gmail.com
Fri Jun 4 07:39:03 PDT 2010


On Fri, Jun 4, 2010 at 6:37 AM, Jerome Glisse <glisse at freedesktop.org> wrote:
> On Thu, Jun 03, 2010 at 07:07:09PM -0400, Alex Deucher wrote:
>> This is needed to enable accel in the ddx.  However,
>> due to a bug in older versions of the ddx, it relies
>> on accel being disabled in order to load properly on
>> evergreen chips.  To maintain compatility, we add a new
>> get accel param and call that from the ddx.  The old one
>> always returns false for evergreen cards.
>>
>> Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
>
> I am not sure i understand how it happened ? This really bad
> that we have to add accel working2, this is ugly...
>

Yeah it sucks.  Unfortunately I forgot to explicitly disable accel on
evergreen when we released 6.13.0 so it relies on accel working to
return false, otherwise it tries to init accel.

Alex

> I am waiting for accel_working3
>
> Cheers,
> Jerome
>
>> ---
>>  drivers/gpu/drm/radeon/evergreen.c  |    2 +-
>>  drivers/gpu/drm/radeon/radeon_drv.c |    3 ++-
>>  drivers/gpu/drm/radeon/radeon_kms.c |    9 ++++++++-
>>  include/drm/radeon_drm.h            |    1 +
>>  4 files changed, 12 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
>> index 0440c09..49c94ae 100644
>> --- a/drivers/gpu/drm/radeon/evergreen.c
>> +++ b/drivers/gpu/drm/radeon/evergreen.c
>> @@ -2153,7 +2153,7 @@ int evergreen_init(struct radeon_device *rdev)
>>       if (r)
>>               return r;
>>
>> -     rdev->accel_working = false;
>> +     rdev->accel_working = true;
>>       r = evergreen_startup(rdev);
>>       if (r) {
>>               dev_err(rdev->dev, "disabling GPU acceleration\n");
>> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
>> index 902d173..e166fe4 100644
>> --- a/drivers/gpu/drm/radeon/radeon_drv.c
>> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
>> @@ -45,9 +45,10 @@
>>   * - 2.2.0 - add r6xx/r7xx const buffer support
>>   * - 2.3.0 - add MSPOS + 3D texture + r500 VAP regs
>>   * - 2.4.0 - add crtc id query
>> + * - 2.5.0 - add get accel 2 to work around ddx breakage for evergreen
>>   */
>>  #define KMS_DRIVER_MAJOR     2
>> -#define KMS_DRIVER_MINOR     4
>> +#define KMS_DRIVER_MINOR     5
>>  #define KMS_DRIVER_PATCHLEVEL        0
>>  int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags);
>>  int radeon_driver_unload_kms(struct drm_device *dev);
>> diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
>> index 0406835..6a70c0d 100644
>> --- a/drivers/gpu/drm/radeon/radeon_kms.c
>> +++ b/drivers/gpu/drm/radeon/radeon_kms.c
>> @@ -118,7 +118,11 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
>>               value = rdev->num_z_pipes;
>>               break;
>>       case RADEON_INFO_ACCEL_WORKING:
>> -             value = rdev->accel_working;
>> +             /* xf86-video-ati 6.13.0 relies on this being false for evergreen */
>> +             if ((rdev->family >= CHIP_CEDAR) && (rdev->family <= CHIP_HEMLOCK))
>> +                     value = false;
>> +             else
>> +                     value = rdev->accel_working;
>>               break;
>>       case RADEON_INFO_CRTC_FROM_ID:
>>               for (i = 0, found = 0; i < rdev->num_crtc; i++) {
>> @@ -134,6 +138,9 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
>>                       return -EINVAL;
>>               }
>>               break;
>> +     case RADEON_INFO_ACCEL_WORKING2:
>> +             value = rdev->accel_working;
>> +             break;
>>       default:
>>               DRM_DEBUG("Invalid request %d\n", info->request);
>>               return -EINVAL;
>> diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
>> index 3ff9fc0..5347063 100644
>> --- a/include/drm/radeon_drm.h
>> +++ b/include/drm/radeon_drm.h
>> @@ -903,6 +903,7 @@ struct drm_radeon_cs {
>>  #define RADEON_INFO_NUM_Z_PIPES      0x02
>>  #define RADEON_INFO_ACCEL_WORKING    0x03
>>  #define RADEON_INFO_CRTC_FROM_ID     0x04
>> +#define RADEON_INFO_ACCEL_WORKING2   0x05
>>
>>  struct drm_radeon_info {
>>       uint32_t                request;
>> --
>> 1.7.0.1
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>


More information about the dri-devel mailing list