[Mesa-dev] [PATCH] gallium/targets: fix bool setting on BE architectures

Edward O'Callaghan funfunctor at folklore1984.net
Tue Apr 18 04:48:43 UTC 2017



On 04/18/2017 02:02 PM, Ilia Mirkin wrote:
> On Tue, Apr 18, 2017 at 12:00 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> val_bool and val_int are in a union. val_bool gets the first byte, which
>> happens to work on LE when setting via the int, but breaks on BE. By
>> setting the value properly, we are able to use DRI3 on BE architectures.
>> Tested by running glxgears with a NV34 in a G5 PPC.
>>
>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>> Cc: mesa-stable at lists.freedesktop.org
>> ---
>>  src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c | 8 ++++----
>>  src/gallium/targets/pipe-loader/pipe_i915.c         | 2 +-
>>  src/gallium/targets/pipe-loader/pipe_msm.c          | 2 +-
>>  src/gallium/targets/pipe-loader/pipe_nouveau.c      | 2 +-
>>  src/gallium/targets/pipe-loader/pipe_r300.c         | 2 +-
>>  src/gallium/targets/pipe-loader/pipe_r600.c         | 2 +-
>>  src/gallium/targets/pipe-loader/pipe_radeonsi.c     | 2 +-
>>  7 files changed, 10 insertions(+), 10 deletions(-)
>>
>> diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
>> index aba814b..a4f5cfc 100644
>> --- a/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
>> +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
>> @@ -64,13 +64,13 @@ static const struct pipe_loader_ops pipe_loader_drm_ops;
>>
>>  #ifdef GALLIUM_STATIC_TARGETS
>>  static const struct drm_conf_ret throttle_ret = {
>> -   DRM_CONF_INT,
>> -   {2},
>> +   .type = DRM_CONF_INT,
>> +   .val.val_int = 2,
>>  };
>>
>>  static const struct drm_conf_ret share_fd_ret = {
>> -   DRM_CONF_BOOL,
>> -   {true},
>> +   .type = DRM_CONF_BOOL,
>> +   .val.val_bool = true,
>>  };
>>
>>  static inline const struct drm_conf_ret *
>> diff --git a/src/gallium/targets/pipe-loader/pipe_i915.c b/src/gallium/targets/pipe-loader/pipe_i915.c
>> index 3af8fe3..2183dc3 100644
>> --- a/src/gallium/targets/pipe-loader/pipe_i915.c
>> +++ b/src/gallium/targets/pipe-loader/pipe_i915.c
>> @@ -30,7 +30,7 @@ static const struct drm_conf_ret throttle_ret = {
>>
>>  static const struct drm_conf_ret share_fd_ret = {
>>     .type = DRM_CONF_BOOL,
>> -   .val.val_int = true,
>> +   .val.val_bool = true,
>>  };
>>
>>  static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
>> diff --git a/src/gallium/targets/pipe-loader/pipe_msm.c b/src/gallium/targets/pipe-loader/pipe_msm.c
>> index fa098e9..858b248 100644
>> --- a/src/gallium/targets/pipe-loader/pipe_msm.c
>> +++ b/src/gallium/targets/pipe-loader/pipe_msm.c
>> @@ -24,7 +24,7 @@ static const struct drm_conf_ret throttle_ret = {
>>
>>  static const struct drm_conf_ret share_fd_ret = {
>>     .type = DRM_CONF_BOOL,
>> -   .val.val_int = true,
>> +   .val.val_bool = true,
>>  };
>>
>>  static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
>> diff --git a/src/gallium/targets/pipe-loader/pipe_nouveau.c b/src/gallium/targets/pipe-loader/pipe_nouveau.c
>> index d882493..d9c0c5d 100644
>> --- a/src/gallium/targets/pipe-loader/pipe_nouveau.c
>> +++ b/src/gallium/targets/pipe-loader/pipe_nouveau.c
>> @@ -24,7 +24,7 @@ static const struct drm_conf_ret throttle_ret = {
>>
>>  static const struct drm_conf_ret share_fd_ret = {
>>     .type = DRM_CONF_BOOL,
>> -   .val.val_int = true,
>> +   .val.val_bool = true,
>>  };
>>
>>  static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
>> diff --git a/src/gallium/targets/pipe-loader/pipe_r300.c b/src/gallium/targets/pipe-loader/pipe_r300.c
>> index 0c17085..dd5c0bd 100644
>> --- a/src/gallium/targets/pipe-loader/pipe_r300.c
>> +++ b/src/gallium/targets/pipe-loader/pipe_r300.c
>> @@ -20,7 +20,7 @@ static const struct drm_conf_ret throttle_ret = {
>>
>>  static const struct drm_conf_ret share_fd_ret = {
>>     .type = DRM_CONF_BOOL,
>> -   .val.val_int = true,
>> +   .val.val_bool = true,
>>  };
>>
>>  static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
>> diff --git a/src/gallium/targets/pipe-loader/pipe_r600.c b/src/gallium/targets/pipe-loader/pipe_r600.c
>> index dd2652d..70760d0 100644
>> --- a/src/gallium/targets/pipe-loader/pipe_r600.c
>> +++ b/src/gallium/targets/pipe-loader/pipe_r600.c
>> @@ -20,7 +20,7 @@ static const struct drm_conf_ret throttle_ret = {
>>
>>  static const struct drm_conf_ret share_fd_ret = {
>>     .type = DRM_CONF_BOOL,
>> -   .val.val_int = true,
>> +   .val.val_bool = true,
>>  };
>>
>>  static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
>> diff --git a/src/gallium/targets/pipe-loader/pipe_radeonsi.c b/src/gallium/targets/pipe-loader/pipe_radeonsi.c
>> index 59ea82d..01b1d8a 100644
>> --- a/src/gallium/targets/pipe-loader/pipe_radeonsi.c
>> +++ b/src/gallium/targets/pipe-loader/pipe_radeonsi.c
>> @@ -26,7 +26,7 @@ static const struct drm_conf_ret throttle_ret = {
>>
>>  static const struct drm_conf_ret share_fd_ret = {
>>     .type = DRM_CONF_BOOL,
>> -   .val.val_int = true,
>> +   .val.val_bool = true,
>>  };
>>
>>  static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
>> --
>> 2.10.2
>>
> 
> Oops, left out this hunk... will squash it into my local patch:
> 
> diff --git a/src/gallium/targets/pipe-loader/pipe_vmwgfx.c
> b/src/gallium/targets/pipe-loader/pipe_vmwgfx.c
> index 4572327..7aa4421 100644
> --- a/src/gallium/targets/pipe-loader/pipe_vmwgfx.c
> +++ b/src/gallium/targets/pipe-loader/pipe_vmwgfx.c
> @@ -30,7 +30,7 @@ static const struct drm_conf_ret throttle_ret = {
> 
>  static const struct drm_conf_ret share_fd_ret = {
>     .type = DRM_CONF_BOOL,
> -   .val.val_int = true,
> +   .val.val_bool = true,
>  };
> 
with that LGTM,

Reviewed-by: Edward O'Callaghan <funfunctor at folklore1984.net>

>  static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170418/99dfdf36/attachment.sig>


More information about the mesa-dev mailing list