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

Ilia Mirkin imirkin at alum.mit.edu
Tue Apr 18 04:02:43 UTC 2017


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,
 };

 static const struct drm_conf_ret *drm_configuration(enum drm_conf conf)


More information about the mesa-dev mailing list