[Mesa-dev] [PATCH 1/3] amd/common: add ac_get_spi_shader_z_format()

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Thu Dec 14 20:41:29 UTC 2017


Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

for the series.

On Thu, Dec 14, 2017 at 1:51 PM, Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
> ac_shader_util.c will contain shader helpers for RadeonSI
> and RADV.
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/amd/Makefile.sources        |  5 ++++-
>  src/amd/common/ac_shader_util.c | 45 +++++++++++++++++++++++++++++++++++++++++
>  src/amd/common/ac_shader_util.h | 33 ++++++++++++++++++++++++++++++
>  src/amd/common/meson.build      |  2 ++
>  4 files changed, 84 insertions(+), 1 deletion(-)
>  create mode 100644 src/amd/common/ac_shader_util.c
>  create mode 100644 src/amd/common/ac_shader_util.h
>
> diff --git a/src/amd/Makefile.sources b/src/amd/Makefile.sources
> index 1bc5a7fe7e..10c4827e19 100644
> --- a/src/amd/Makefile.sources
> +++ b/src/amd/Makefile.sources
> @@ -46,7 +46,10 @@ AMD_COMPILER_FILES = \
>         common/ac_llvm_util.h \
>         common/ac_shader_abi.h \
>         common/ac_shader_info.c \
> -       common/ac_shader_info.h
> +       common/ac_shader_info.h \
> +       common/ac_shader_util.c \
> +       common/ac_shader_util.h
> +
>
>  AMD_NIR_FILES = \
>         common/ac_nir_to_llvm.c \
> diff --git a/src/amd/common/ac_shader_util.c b/src/amd/common/ac_shader_util.c
> new file mode 100644
> index 0000000000..9d33a46559
> --- /dev/null
> +++ b/src/amd/common/ac_shader_util.c
> @@ -0,0 +1,45 @@
> +/*
> + * Copyright 2012 Advanced Micro Devices, Inc.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> + * IN THE SOFTWARE.
> + */
> +
> +#include "ac_shader_util.h"
> +#include "sid.h"
> +
> +unsigned
> +ac_get_spi_shader_z_format(bool writes_z, bool writes_stencil,
> +                          bool writes_samplemask)
> +{
> +       if (writes_z) {
> +               /* Z needs 32 bits. */
> +               if (writes_samplemask)
> +                       return V_028710_SPI_SHADER_32_ABGR;
> +               else if (writes_stencil)
> +                       return V_028710_SPI_SHADER_32_GR;
> +               else
> +                       return V_028710_SPI_SHADER_32_R;
> +       } else if (writes_stencil || writes_samplemask) {
> +               /* Both stencil and sample mask need only 16 bits. */
> +               return V_028710_SPI_SHADER_UINT16_ABGR;
> +       } else {
> +               return V_028710_SPI_SHADER_ZERO;
> +       }
> +}
> diff --git a/src/amd/common/ac_shader_util.h b/src/amd/common/ac_shader_util.h
> new file mode 100644
> index 0000000000..1f971e76f1
> --- /dev/null
> +++ b/src/amd/common/ac_shader_util.h
> @@ -0,0 +1,33 @@
> +/*
> + * Copyright 2012 Advanced Micro Devices, Inc.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> + * IN THE SOFTWARE.
> + */
> +
> +#ifndef AC_SHADER_UTIL_H
> +#define AC_SHADER_UTIL_H
> +
> +#include <stdbool.h>
> +
> +unsigned
> +ac_get_spi_shader_z_format(bool writes_z, bool writes_stencil,
> +                          bool writes_samplemask);
> +
> +#endif
> diff --git a/src/amd/common/meson.build b/src/amd/common/meson.build
> index 8c526675c4..63c1517543 100644
> --- a/src/amd/common/meson.build
> +++ b/src/amd/common/meson.build
> @@ -38,6 +38,8 @@ amd_common_files = files(
>    'ac_shader_abi.h',
>    'ac_shader_info.c',
>    'ac_shader_info.h',
> +  'ac_shader_util.c',
> +  'ac_shader_util.h',
>    'ac_nir_to_llvm.c',
>    'ac_nir_to_llvm.h',
>    'ac_gpu_info.c',
> --
> 2.15.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list