[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