[Mesa-dev] [PATCH 4/8] etnaviv: add 2D GPU YUV->RGB blitter

Christian Gmeiner christian.gmeiner at gmail.com
Fri Apr 26 06:24:52 UTC 2019


Am Fr., 12. Apr. 2019 um 19:38 Uhr schrieb Lucas Stach <l.stach at pengutronix.de>:
>
> This adds a blit path using the 2D GPU for a linear YUV to tiled RGB
> blit. This allows to implement importing of planar YUV textures with
> a single copy.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
> ---
>  src/gallium/drivers/etnaviv/Makefile.sources  |    2 +
>  src/gallium/drivers/etnaviv/etnaviv_2d.c      |  164 ++
>  src/gallium/drivers/etnaviv/etnaviv_2d.h      |   37 +
>  src/gallium/drivers/etnaviv/hw/state_2d.xml.h | 1499 +++++++++++++++++
>  src/gallium/drivers/etnaviv/meson.build       |    3 +
>  5 files changed, 1705 insertions(+)
>  create mode 100644 src/gallium/drivers/etnaviv/etnaviv_2d.c
>  create mode 100644 src/gallium/drivers/etnaviv/etnaviv_2d.h
>  create mode 100644 src/gallium/drivers/etnaviv/hw/state_2d.xml.h
>
> diff --git a/src/gallium/drivers/etnaviv/Makefile.sources b/src/gallium/drivers/etnaviv/Makefile.sources
> index 01e7e49a38ad..36dd7d1b6aa4 100644
> --- a/src/gallium/drivers/etnaviv/Makefile.sources
> +++ b/src/gallium/drivers/etnaviv/Makefile.sources
> @@ -3,11 +3,13 @@ C_SOURCES :=  \
>         hw/common.xml.h \
>         hw/common_3d.xml.h \
>         hw/isa.xml.h \
> +       hw/state_2d.xml.h \
>         hw/state_3d.xml.h \
>         hw/state_blt.xml.h \
>         hw/state.xml.h \
>         hw/texdesc_3d.xml.h \
>         \
> +       etnaviv_2d.c \
>         etnaviv_asm.c \
>         etnaviv_asm.h \
>         etnaviv_blend.c \
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_2d.c b/src/gallium/drivers/etnaviv/etnaviv_2d.c
> new file mode 100644
> index 000000000000..457fa4e0cbd0
> --- /dev/null
> +++ b/src/gallium/drivers/etnaviv/etnaviv_2d.c
> @@ -0,0 +1,164 @@
> +/*
> + * Copyright (c) 2018 Etnaviv Project
> + *
> + * 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, sub license,
> + * 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 NON-INFRINGEMENT. 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 "etnaviv_2d.h"
> +#include "etnaviv_context.h"
> +#include "etnaviv_emit.h"
> +#include "etnaviv_screen.h"
> +
> +#include "pipe/p_state.h"
> +#include "util/u_format.h"
> +
> +#include "hw/state_2d.xml.h"
> +
> +#include <assert.h>
> +
> +#define EMIT_STATE(state_name, src_value) \
> +   etna_coalsence_emit(stream, &coalesce, VIVS_##state_name, src_value)
> +
> +#define EMIT_STATE_RELOC(state_name, src_value) \
> +   etna_coalsence_emit_reloc(stream, &coalesce, VIVS_##state_name, src_value)
> +
> +bool etna_try_2d_blit(struct pipe_context *pctx,
> +                      const struct pipe_blit_info *blit_info)

bool
etna_try_2d_blit(struct pipe_context *pctx, ...

> +{
> +   struct etna_context *ctx = etna_context(pctx);
> +   struct etna_cmd_stream *stream = ctx->stream2d;
> +   struct etna_coalesce coalesce;
> +   struct etna_reloc ry, ru, rv, rdst;
> +   struct pipe_resource *res_y, *res_u, *res_v, *res_dst;
> +   uint32_t src_format;
> +
> +   assert(util_format_is_yuv(blit_info->src.format));
> +   assert(blit_info->dst.format == PIPE_FORMAT_R8G8B8A8_UNORM);
> +
> +   if (!stream)
> +      return FALSE;
           return false;

> +
> +   switch (blit_info->src.format) {
> +   case PIPE_FORMAT_NV12:
> +      src_format = DE_FORMAT_NV12;
> +      break;
> +   case PIPE_FORMAT_YUYV:
> +      src_format = DE_FORMAT_YUY2;
> +      break;

Do you need to support YUVU in your utlra fast video-path with glReadPixels(..)?

> +   default:
> +      return FALSE;
           return false;
> +   }
> +
> +   res_y = blit_info->src.resource;
> +   res_u = res_y->next ? res_y->next : res_y;
> +   res_v = res_u->next ? res_u->next : res_u;
> +
> +   ry.bo = etna_resource(res_y)->bo;
> +   ry.offset = etna_resource(res_y)->levels[blit_info->src.level].offset;
> +   ru.bo = etna_resource(res_u)->bo;
> +   ru.offset = etna_resource(res_u)->levels[blit_info->src.level].offset;
> +   rv.bo = etna_resource(res_v)->bo;
> +   rv.offset = etna_resource(res_v)->levels[blit_info->src.level].offset;
> +
> +   ry.flags = ru.flags = rv.flags = ETNA_RELOC_READ;
> +
> +   res_dst = blit_info->dst.resource;
> +   rdst.bo = etna_resource(res_dst)->bo;
> +   rdst.flags = ETNA_RELOC_WRITE;
> +   rdst.offset = 0;
> +
> +   etna_coalesce_start(stream, &coalesce);
> +
> +   EMIT_STATE_RELOC(DE_SRC_ADDRESS, &ry);
> +   EMIT_STATE(DE_SRC_STRIDE, etna_resource(res_y)->levels[0].stride);

maybe remove empty line?

> +
> +   EMIT_STATE_RELOC(DE_UPLANE_ADDRESS, &ru);
> +   EMIT_STATE(DE_UPLANE_STRIDE, etna_resource(res_u)->levels[0].stride);
> +   EMIT_STATE_RELOC(DE_VPLANE_ADDRESS, &rv);
> +   EMIT_STATE(DE_VPLANE_STRIDE, etna_resource(res_v)->levels[0].stride);
> +
> +   /* Source configuration */
> +   EMIT_STATE(DE_SRC_ROTATION_CONFIG, 0);
> +   EMIT_STATE(DE_SRC_CONFIG,
> +              VIVS_DE_SRC_CONFIG_SOURCE_FORMAT(src_format) |
> +              VIVS_DE_SRC_CONFIG_SWIZZLE(DE_SWIZZLE_ARGB));
> +   EMIT_STATE(DE_SRC_ORIGIN, 0);
> +   EMIT_STATE(DE_SRC_SIZE, 0);
> +   EMIT_STATE(DE_SRC_COLOR_BG, 0);
> +   EMIT_STATE(DE_SRC_COLOR_FG, 0);
> +   EMIT_STATE(DE_STRETCH_FACTOR_LOW,
> +              VIVS_DE_STRETCH_FACTOR_LOW_X(1 << 16));
> +   EMIT_STATE(DE_STRETCH_FACTOR_HIGH,
> +              VIVS_DE_STRETCH_FACTOR_HIGH_Y(1 << 16));
> +
> +   /* Destination address and stride */
> +   EMIT_STATE_RELOC(DE_DEST_ADDRESS, &rdst);
> +   EMIT_STATE(DE_DEST_STRIDE, etna_resource(res_dst)->levels[0].stride);
> +
> +   /* Drawing engine configuration */
> +   EMIT_STATE(DE_DEST_ROTATION_CONFIG, 0);
> +   EMIT_STATE(DE_DEST_CONFIG,
> +              VIVS_DE_DEST_CONFIG_FORMAT(DE_FORMAT_A8R8G8B8) |
> +              VIVS_DE_DEST_CONFIG_COMMAND_BIT_BLT |
> +              VIVS_DE_DEST_CONFIG_SWIZZLE(DE_SWIZZLE_ABGR) |
> +              VIVS_DE_DEST_CONFIG_TILED_ENABLE);
> +   EMIT_STATE(DE_ROP,
> +              VIVS_DE_ROP_ROP_FG(0xcc) | VIVS_DE_ROP_ROP_BG(0xcc) |
> +              VIVS_DE_ROP_TYPE_ROP4);
> +   EMIT_STATE(DE_CLIP_TOP_LEFT,
> +              VIVS_DE_CLIP_TOP_LEFT_X(0) |
> +              VIVS_DE_CLIP_TOP_LEFT_Y(0));
> +   EMIT_STATE(DE_CLIP_BOTTOM_RIGHT,
> +              VIVS_DE_CLIP_BOTTOM_RIGHT_X(blit_info->dst.box.width) |
> +              VIVS_DE_CLIP_BOTTOM_RIGHT_Y(blit_info->dst.box.height));
> +   EMIT_STATE(DE_CONFIG, 0);
> +   EMIT_STATE(DE_SRC_ORIGIN_FRACTION, 0);
> +   EMIT_STATE(DE_ALPHA_CONTROL, 0);
> +   EMIT_STATE(DE_ALPHA_MODES, 0);
> +   EMIT_STATE(DE_DEST_ROTATION_HEIGHT, 0);
> +   EMIT_STATE(DE_SRC_ROTATION_HEIGHT, 0);
> +   EMIT_STATE(DE_ROT_ANGLE, 0);
> +
> +   etna_coalesce_end(stream, &coalesce);
> +
> +   etna_cmd_stream_emit(stream, VIV_FE_DRAW_2D_HEADER_OP_DRAW_2D |
> +                        VIV_FE_DRAW_2D_HEADER_COUNT(1));
> +   etna_cmd_stream_emit(stream, 0xdeadbeef);
> +
> +   etna_cmd_stream_emit(stream, VIV_FE_DRAW_2D_TOP_LEFT_X(0) |
> +                        VIV_FE_DRAW_2D_TOP_LEFT_Y(0));
> +   etna_cmd_stream_emit(stream,
> +                        VIV_FE_DRAW_2D_BOTTOM_RIGHT_X(blit_info->dst.box.width) |
> +                        VIV_FE_DRAW_2D_BOTTOM_RIGHT_Y(blit_info->dst.box.height));
> +
> +   etna_set_state(stream, 1, 0);
> +   etna_set_state(stream, 1, 0);
> +   etna_set_state(stream, 1, 0);

I did not look at the 2D core so you can tell me what these three
lines are doing?

> +
> +   etna_set_state(stream, VIVS_GL_FLUSH_CACHE, VIVS_GL_FLUSH_CACHE_PE2D);
> +
> +   /* Flush now, this avoid the need to track cross-dependencies between
> +    * 2D and 3D GPU. The 3D GPU will only read from the 2D prepared buffers,
> +    * so the kernel is taking care of any needed synchronization.
> +    */
> +   etna_cmd_stream_flush(ctx->stream2d);
> +
> +   return TRUE;
           return true;
> +}
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_2d.h b/src/gallium/drivers/etnaviv/etnaviv_2d.h
> new file mode 100644
> index 000000000000..334cf99a7a15
> --- /dev/null
> +++ b/src/gallium/drivers/etnaviv/etnaviv_2d.h
> @@ -0,0 +1,37 @@
> +/*
> + * Copyright (c) 2018 Etnaviv Project
> + *
> + * 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, sub license,
> + * 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 NON-INFRINGEMENT. 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.
> + *
> + * Authors:
> + *    Wladimir J. van der Laan <laanwj at gmail.com>
> + */
> +#ifndef H_ETNAVIV_2D
> +#define H_ETNAVIV_2D
> +
> +#include "pipe/p_compiler.h"
> +
> +struct pipe_context;
> +struct pipe_blit_info;
> +
> +bool etna_try_2d_blit(struct pipe_context *pctx,
> +                      const struct pipe_blit_info *blit_info);
> +
bool
etna_try_2d_blit(struct pipe_context *pctx, ...

> +#endif
> diff --git a/src/gallium/drivers/etnaviv/hw/state_2d.xml.h b/src/gallium/drivers/etnaviv/hw/state_2d.xml.h
> new file mode 100644
> index 000000000000..88aadb57cfac
> --- /dev/null
> +++ b/src/gallium/drivers/etnaviv/hw/state_2d.xml.h
> @@ -0,0 +1,1499 @@
> +#ifndef STATE_2D_XML
> +#define STATE_2D_XML
> +
> +/* Autogenerated file, DO NOT EDIT manually!
> +
> +This file was generated by the rules-ng-ng headergen tool in this git repository:
> +http://0x04.net/cgit/index.cgi/rules-ng-ng
> +git clone git://0x04.net/rules-ng-ng
> +
> +The rules-ng-ng source files this header was generated from are:
> +- state.xml     (  26087 bytes, from 2017-12-18 16:51:59)
> +- common.xml    (  35468 bytes, from 2018-01-22 13:48:54)
> +- common_3d.xml (  14615 bytes, from 2017-12-18 16:51:59)
> +- state_hi.xml  (  30232 bytes, from 2018-02-15 15:48:01)
> +- copyright.xml (   1597 bytes, from 2016-12-08 16:37:56)
> +- state_2d.xml  (  51552 bytes, from 2016-12-08 16:37:56)
> +- state_3d.xml  (  79992 bytes, from 2017-12-18 16:51:59)
> +- state_blt.xml (  13405 bytes, from 2017-12-18 16:51:59)
> +- state_vg.xml  (   5975 bytes, from 2016-12-08 16:37:56)
> +
> +Copyright (C) 2012-2016 by the following authors:
> +- Wladimir J. van der Laan <laanwj at gmail.com>
> +- Christian Gmeiner <christian.gmeiner at gmail.com>
> +- Lucas Stach <l.stach at pengutronix.de>
> +- Russell King <rmk at arm.linux.org.uk>
> +
> +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, sub license,
> +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 NON-INFRINGEMENT. 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.
> +*/
> +
> +
> +#define DE_FORMAT_X4R4G4B4                                     0x00000000
> +#define DE_FORMAT_A4R4G4B4                                     0x00000001
> +#define DE_FORMAT_X1R5G5B5                                     0x00000002
> +#define DE_FORMAT_A1R5G5B5                                     0x00000003
> +#define DE_FORMAT_R5G6B5                                       0x00000004
> +#define DE_FORMAT_X8R8G8B8                                     0x00000005
> +#define DE_FORMAT_A8R8G8B8                                     0x00000006
> +#define DE_FORMAT_YUY2                                         0x00000007
> +#define DE_FORMAT_UYVY                                         0x00000008
> +#define DE_FORMAT_INDEX8                                       0x00000009
> +#define DE_FORMAT_MONOCHROME                                   0x0000000a
> +#define DE_FORMAT_YV12                                         0x0000000f
> +#define DE_FORMAT_A8                                           0x00000010
> +#define DE_FORMAT_NV12                                         0x00000011
> +#define DE_FORMAT_NV16                                         0x00000012
> +#define DE_FORMAT_RG16                                         0x00000013
> +#define DE_SWIZZLE_ARGB                                                0x00000000
> +#define DE_SWIZZLE_RGBA                                                0x00000001
> +#define DE_SWIZZLE_ABGR                                                0x00000002
> +#define DE_SWIZZLE_BGRA                                                0x00000003
> +#define DE_BLENDMODE_ZERO                                      0x00000000
> +#define DE_BLENDMODE_ONE                                       0x00000001
> +#define DE_BLENDMODE_NORMAL                                    0x00000002
> +#define DE_BLENDMODE_INVERSED                                  0x00000003
> +#define DE_BLENDMODE_COLOR                                     0x00000004
> +#define DE_BLENDMODE_COLOR_INVERSED                            0x00000005
> +#define DE_BLENDMODE_SATURATED_ALPHA                           0x00000006
> +#define DE_BLENDMODE_SATURATED_DEST_ALPHA                      0x00000007
> +#define DE_COMPONENT_BLUE                                      0x00000000
> +#define DE_COMPONENT_GREEN                                     0x00000001
> +#define DE_COMPONENT_RED                                       0x00000002
> +#define DE_COMPONENT_ALPHA                                     0x00000003
> +#define DE_ROT_MODE_ROT0                                       0x00000000
> +#define DE_ROT_MODE_FLIP_X                                     0x00000001
> +#define DE_ROT_MODE_FLIP_Y                                     0x00000002
> +#define DE_ROT_MODE_ROT90                                      0x00000004
> +#define DE_ROT_MODE_ROT180                                     0x00000005
> +#define DE_ROT_MODE_ROT270                                     0x00000006
> +#define DE_MIRROR_MODE_NONE                                    0x00000000
> +#define DE_MIRROR_MODE_MIRROR_X                                        0x00000001
> +#define DE_MIRROR_MODE_MIRROR_Y                                        0x00000002
> +#define DE_MIRROR_MODE_MIRROR_XY                               0x00000003
> +#define DE_COLOR_BLUE__MASK                                    0x000000ff
> +#define DE_COLOR_BLUE__SHIFT                                   0
> +#define DE_COLOR_BLUE(x)                                       (((x) << DE_COLOR_BLUE__SHIFT) & DE_COLOR_BLUE__MASK)
> +#define DE_COLOR_GREEN__MASK                                   0x0000ff00
> +#define DE_COLOR_GREEN__SHIFT                                  8
> +#define DE_COLOR_GREEN(x)                                      (((x) << DE_COLOR_GREEN__SHIFT) & DE_COLOR_GREEN__MASK)
> +#define DE_COLOR_RED__MASK                                     0x00ff0000
> +#define DE_COLOR_RED__SHIFT                                    16
> +#define DE_COLOR_RED(x)                                                (((x) << DE_COLOR_RED__SHIFT) & DE_COLOR_RED__MASK)
> +#define DE_COLOR_ALPHA__MASK                                   0xff000000
> +#define DE_COLOR_ALPHA__SHIFT                                  24
> +#define DE_COLOR_ALPHA(x)                                      (((x) << DE_COLOR_ALPHA__SHIFT) & DE_COLOR_ALPHA__MASK)
> +#define VIVS_DE                                                        0x00000000
> +
> +#define VIVS_DE_SRC_ADDRESS                                    0x00001200
> +
> +#define VIVS_DE_SRC_STRIDE                                     0x00001204
> +#define VIVS_DE_SRC_STRIDE_STRIDE__MASK                                0x0003ffff
> +#define VIVS_DE_SRC_STRIDE_STRIDE__SHIFT                       0
> +#define VIVS_DE_SRC_STRIDE_STRIDE(x)                           (((x) << VIVS_DE_SRC_STRIDE_STRIDE__SHIFT) & VIVS_DE_SRC_STRIDE_STRIDE__MASK)
> +
> +#define VIVS_DE_SRC_ROTATION_CONFIG                            0x00001208
> +#define VIVS_DE_SRC_ROTATION_CONFIG_WIDTH__MASK                        0x0000ffff
> +#define VIVS_DE_SRC_ROTATION_CONFIG_WIDTH__SHIFT               0
> +#define VIVS_DE_SRC_ROTATION_CONFIG_WIDTH(x)                   (((x) << VIVS_DE_SRC_ROTATION_CONFIG_WIDTH__SHIFT) & VIVS_DE_SRC_ROTATION_CONFIG_WIDTH__MASK)
> +#define VIVS_DE_SRC_ROTATION_CONFIG_ROTATION__MASK             0x00010000
> +#define VIVS_DE_SRC_ROTATION_CONFIG_ROTATION__SHIFT            16
> +#define VIVS_DE_SRC_ROTATION_CONFIG_ROTATION_DISABLE           0x00000000
> +#define VIVS_DE_SRC_ROTATION_CONFIG_ROTATION_ENABLE            0x00010000
> +
> +#define VIVS_DE_SRC_CONFIG                                     0x0000120c
> +#define VIVS_DE_SRC_CONFIG_PE10_SOURCE_FORMAT__MASK            0x0000000f
> +#define VIVS_DE_SRC_CONFIG_PE10_SOURCE_FORMAT__SHIFT           0
> +#define VIVS_DE_SRC_CONFIG_PE10_SOURCE_FORMAT(x)               (((x) << VIVS_DE_SRC_CONFIG_PE10_SOURCE_FORMAT__SHIFT) & VIVS_DE_SRC_CONFIG_PE10_SOURCE_FORMAT__MASK)
> +#define VIVS_DE_SRC_CONFIG_TRANSPARENCY__MASK                  0x00000030
> +#define VIVS_DE_SRC_CONFIG_TRANSPARENCY__SHIFT                 4
> +#define VIVS_DE_SRC_CONFIG_TRANSPARENCY(x)                     (((x) << VIVS_DE_SRC_CONFIG_TRANSPARENCY__SHIFT) & VIVS_DE_SRC_CONFIG_TRANSPARENCY__MASK)
> +#define VIVS_DE_SRC_CONFIG_SRC_RELATIVE__MASK                  0x00000040
> +#define VIVS_DE_SRC_CONFIG_SRC_RELATIVE__SHIFT                 6
> +#define VIVS_DE_SRC_CONFIG_SRC_RELATIVE_ABSOLUTE               0x00000000
> +#define VIVS_DE_SRC_CONFIG_SRC_RELATIVE_RELATIVE               0x00000040
> +#define VIVS_DE_SRC_CONFIG_TILED__MASK                         0x00000080
> +#define VIVS_DE_SRC_CONFIG_TILED__SHIFT                                7
> +#define VIVS_DE_SRC_CONFIG_TILED_DISABLE                       0x00000000
> +#define VIVS_DE_SRC_CONFIG_TILED_ENABLE                                0x00000080
> +#define VIVS_DE_SRC_CONFIG_LOCATION__MASK                      0x00000100
> +#define VIVS_DE_SRC_CONFIG_LOCATION__SHIFT                     8
> +#define VIVS_DE_SRC_CONFIG_LOCATION_MEMORY                     0x00000000
> +#define VIVS_DE_SRC_CONFIG_LOCATION_STREAM                     0x00000100
> +#define VIVS_DE_SRC_CONFIG_PACK__MASK                          0x00003000
> +#define VIVS_DE_SRC_CONFIG_PACK__SHIFT                         12
> +#define VIVS_DE_SRC_CONFIG_PACK_PACKED8                                0x00000000
> +#define VIVS_DE_SRC_CONFIG_PACK_PACKED16                       0x00001000
> +#define VIVS_DE_SRC_CONFIG_PACK_PACKED32                       0x00002000
> +#define VIVS_DE_SRC_CONFIG_PACK_UNPACKED                       0x00003000
> +#define VIVS_DE_SRC_CONFIG_MONO_TRANSPARENCY__MASK             0x00008000
> +#define VIVS_DE_SRC_CONFIG_MONO_TRANSPARENCY__SHIFT            15
> +#define VIVS_DE_SRC_CONFIG_MONO_TRANSPARENCY_BACKGROUND                0x00000000
> +#define VIVS_DE_SRC_CONFIG_MONO_TRANSPARENCY_FOREGROUND                0x00008000
> +#define VIVS_DE_SRC_CONFIG_UNK16                               0x00010000
> +#define VIVS_DE_SRC_CONFIG_SWIZZLE__MASK                       0x00300000
> +#define VIVS_DE_SRC_CONFIG_SWIZZLE__SHIFT                      20
> +#define VIVS_DE_SRC_CONFIG_SWIZZLE(x)                          (((x) << VIVS_DE_SRC_CONFIG_SWIZZLE__SHIFT) & VIVS_DE_SRC_CONFIG_SWIZZLE__MASK)
> +#define VIVS_DE_SRC_CONFIG_SOURCE_FORMAT__MASK                 0x1f000000
> +#define VIVS_DE_SRC_CONFIG_SOURCE_FORMAT__SHIFT                        24
> +#define VIVS_DE_SRC_CONFIG_SOURCE_FORMAT(x)                    (((x) << VIVS_DE_SRC_CONFIG_SOURCE_FORMAT__SHIFT) & VIVS_DE_SRC_CONFIG_SOURCE_FORMAT__MASK)
> +#define VIVS_DE_SRC_CONFIG_DISABLE420_L2_CACHE                 0x20000000
> +#define VIVS_DE_SRC_CONFIG_ENDIAN_CONTROL__MASK                        0xc0000000
> +#define VIVS_DE_SRC_CONFIG_ENDIAN_CONTROL__SHIFT               30
> +#define VIVS_DE_SRC_CONFIG_ENDIAN_CONTROL(x)                   (((x) << VIVS_DE_SRC_CONFIG_ENDIAN_CONTROL__SHIFT) & VIVS_DE_SRC_CONFIG_ENDIAN_CONTROL__MASK)
> +
> +#define VIVS_DE_SRC_ORIGIN                                     0x00001210
> +#define VIVS_DE_SRC_ORIGIN_X__MASK                             0x0000ffff
> +#define VIVS_DE_SRC_ORIGIN_X__SHIFT                            0
> +#define VIVS_DE_SRC_ORIGIN_X(x)                                        (((x) << VIVS_DE_SRC_ORIGIN_X__SHIFT) & VIVS_DE_SRC_ORIGIN_X__MASK)
> +#define VIVS_DE_SRC_ORIGIN_Y__MASK                             0xffff0000
> +#define VIVS_DE_SRC_ORIGIN_Y__SHIFT                            16
> +#define VIVS_DE_SRC_ORIGIN_Y(x)                                        (((x) << VIVS_DE_SRC_ORIGIN_Y__SHIFT) & VIVS_DE_SRC_ORIGIN_Y__MASK)
> +
> +#define VIVS_DE_SRC_SIZE                                       0x00001214
> +#define VIVS_DE_SRC_SIZE_X__MASK                               0x0000ffff
> +#define VIVS_DE_SRC_SIZE_X__SHIFT                              0
> +#define VIVS_DE_SRC_SIZE_X(x)                                  (((x) << VIVS_DE_SRC_SIZE_X__SHIFT) & VIVS_DE_SRC_SIZE_X__MASK)
> +#define VIVS_DE_SRC_SIZE_Y__MASK                               0xffff0000
> +#define VIVS_DE_SRC_SIZE_Y__SHIFT                              16
> +#define VIVS_DE_SRC_SIZE_Y(x)                                  (((x) << VIVS_DE_SRC_SIZE_Y__SHIFT) & VIVS_DE_SRC_SIZE_Y__MASK)
> +
> +#define VIVS_DE_SRC_COLOR_BG                                   0x00001218
> +
> +#define VIVS_DE_SRC_COLOR_FG                                   0x0000121c
> +
> +#define VIVS_DE_STRETCH_FACTOR_LOW                             0x00001220
> +#define VIVS_DE_STRETCH_FACTOR_LOW_X__MASK                     0x7fffffff
> +#define VIVS_DE_STRETCH_FACTOR_LOW_X__SHIFT                    0
> +#define VIVS_DE_STRETCH_FACTOR_LOW_X(x)                                (((x) << VIVS_DE_STRETCH_FACTOR_LOW_X__SHIFT) & VIVS_DE_STRETCH_FACTOR_LOW_X__MASK)
> +
> +#define VIVS_DE_STRETCH_FACTOR_HIGH                            0x00001224
> +#define VIVS_DE_STRETCH_FACTOR_HIGH_Y__MASK                    0x7fffffff
> +#define VIVS_DE_STRETCH_FACTOR_HIGH_Y__SHIFT                   0
> +#define VIVS_DE_STRETCH_FACTOR_HIGH_Y(x)                       (((x) << VIVS_DE_STRETCH_FACTOR_HIGH_Y__SHIFT) & VIVS_DE_STRETCH_FACTOR_HIGH_Y__MASK)
> +
> +#define VIVS_DE_DEST_ADDRESS                                   0x00001228
> +
> +#define VIVS_DE_DEST_STRIDE                                    0x0000122c
> +#define VIVS_DE_DEST_STRIDE_STRIDE__MASK                       0x0003ffff
> +#define VIVS_DE_DEST_STRIDE_STRIDE__SHIFT                      0
> +#define VIVS_DE_DEST_STRIDE_STRIDE(x)                          (((x) << VIVS_DE_DEST_STRIDE_STRIDE__SHIFT) & VIVS_DE_DEST_STRIDE_STRIDE__MASK)
> +
> +#define VIVS_DE_DEST_ROTATION_CONFIG                           0x00001230
> +#define VIVS_DE_DEST_ROTATION_CONFIG_WIDTH__MASK               0x0000ffff
> +#define VIVS_DE_DEST_ROTATION_CONFIG_WIDTH__SHIFT              0
> +#define VIVS_DE_DEST_ROTATION_CONFIG_WIDTH(x)                  (((x) << VIVS_DE_DEST_ROTATION_CONFIG_WIDTH__SHIFT) & VIVS_DE_DEST_ROTATION_CONFIG_WIDTH__MASK)
> +#define VIVS_DE_DEST_ROTATION_CONFIG_ROTATION__MASK            0x00010000
> +#define VIVS_DE_DEST_ROTATION_CONFIG_ROTATION__SHIFT           16
> +#define VIVS_DE_DEST_ROTATION_CONFIG_ROTATION_DISABLE          0x00000000
> +#define VIVS_DE_DEST_ROTATION_CONFIG_ROTATION_ENABLE           0x00010000
> +
> +#define VIVS_DE_DEST_CONFIG                                    0x00001234
> +#define VIVS_DE_DEST_CONFIG_FORMAT__MASK                       0x0000001f
> +#define VIVS_DE_DEST_CONFIG_FORMAT__SHIFT                      0
> +#define VIVS_DE_DEST_CONFIG_FORMAT(x)                          (((x) << VIVS_DE_DEST_CONFIG_FORMAT__SHIFT) & VIVS_DE_DEST_CONFIG_FORMAT__MASK)
> +#define VIVS_DE_DEST_CONFIG_TILED__MASK                                0x00000100
> +#define VIVS_DE_DEST_CONFIG_TILED__SHIFT                       8
> +#define VIVS_DE_DEST_CONFIG_TILED_DISABLE                      0x00000000
> +#define VIVS_DE_DEST_CONFIG_TILED_ENABLE                       0x00000100
> +#define VIVS_DE_DEST_CONFIG_COMMAND__MASK                      0x0000f000
> +#define VIVS_DE_DEST_CONFIG_COMMAND__SHIFT                     12
> +#define VIVS_DE_DEST_CONFIG_COMMAND_CLEAR                      0x00000000
> +#define VIVS_DE_DEST_CONFIG_COMMAND_LINE                       0x00001000
> +#define VIVS_DE_DEST_CONFIG_COMMAND_BIT_BLT                    0x00002000
> +#define VIVS_DE_DEST_CONFIG_COMMAND_BIT_BLT_REVERSED           0x00003000
> +#define VIVS_DE_DEST_CONFIG_COMMAND_STRETCH_BLT                        0x00004000
> +#define VIVS_DE_DEST_CONFIG_COMMAND_HOR_FILTER_BLT             0x00005000
> +#define VIVS_DE_DEST_CONFIG_COMMAND_VER_FILTER_BLT             0x00006000
> +#define VIVS_DE_DEST_CONFIG_COMMAND_ONE_PASS_FILTER_BLT                0x00007000
> +#define VIVS_DE_DEST_CONFIG_COMMAND_MULTI_SOURCE_BLT           0x00008000
> +#define VIVS_DE_DEST_CONFIG_SWIZZLE__MASK                      0x00030000
> +#define VIVS_DE_DEST_CONFIG_SWIZZLE__SHIFT                     16
> +#define VIVS_DE_DEST_CONFIG_SWIZZLE(x)                         (((x) << VIVS_DE_DEST_CONFIG_SWIZZLE__SHIFT) & VIVS_DE_DEST_CONFIG_SWIZZLE__MASK)
> +#define VIVS_DE_DEST_CONFIG_ENDIAN_CONTROL__MASK               0x00300000
> +#define VIVS_DE_DEST_CONFIG_ENDIAN_CONTROL__SHIFT              20
> +#define VIVS_DE_DEST_CONFIG_ENDIAN_CONTROL(x)                  (((x) << VIVS_DE_DEST_CONFIG_ENDIAN_CONTROL__SHIFT) & VIVS_DE_DEST_CONFIG_ENDIAN_CONTROL__MASK)
> +#define VIVS_DE_DEST_CONFIG_GDI_STRE__MASK                     0x01000000
> +#define VIVS_DE_DEST_CONFIG_GDI_STRE__SHIFT                    24
> +#define VIVS_DE_DEST_CONFIG_GDI_STRE_DISABLE                   0x00000000
> +#define VIVS_DE_DEST_CONFIG_GDI_STRE_ENABLE                    0x01000000
> +#define VIVS_DE_DEST_CONFIG_INTER_TILE_PER_FIX__MASK           0x02000000
> +#define VIVS_DE_DEST_CONFIG_INTER_TILE_PER_FIX__SHIFT          25
> +#define VIVS_DE_DEST_CONFIG_INTER_TILE_PER_FIX_DISABLED                0x02000000
> +#define VIVS_DE_DEST_CONFIG_INTER_TILE_PER_FIX_ENABLED         0x00000000
> +#define VIVS_DE_DEST_CONFIG_MINOR_TILED__MASK                  0x04000000
> +#define VIVS_DE_DEST_CONFIG_MINOR_TILED__SHIFT                 26
> +#define VIVS_DE_DEST_CONFIG_MINOR_TILED_DISABLE                        0x00000000
> +#define VIVS_DE_DEST_CONFIG_MINOR_TILED_ENABLE                 0x04000000
> +
> +#define VIVS_DE_PATTERN_ADDRESS                                        0x00001238
> +
> +#define VIVS_DE_PATTERN_CONFIG                                 0x0000123c
> +#define VIVS_DE_PATTERN_CONFIG_FORMAT__MASK                    0x0000000f
> +#define VIVS_DE_PATTERN_CONFIG_FORMAT__SHIFT                   0
> +#define VIVS_DE_PATTERN_CONFIG_FORMAT(x)                       (((x) << VIVS_DE_PATTERN_CONFIG_FORMAT__SHIFT) & VIVS_DE_PATTERN_CONFIG_FORMAT__MASK)
> +#define VIVS_DE_PATTERN_CONFIG_TYPE__MASK                      0x00000010
> +#define VIVS_DE_PATTERN_CONFIG_TYPE__SHIFT                     4
> +#define VIVS_DE_PATTERN_CONFIG_TYPE_SOLID_COLOR                        0x00000000
> +#define VIVS_DE_PATTERN_CONFIG_TYPE_PATTERN                    0x00000010
> +#define VIVS_DE_PATTERN_CONFIG_COLOR_CONVERT__MASK             0x00000020
> +#define VIVS_DE_PATTERN_CONFIG_COLOR_CONVERT__SHIFT            5
> +#define VIVS_DE_PATTERN_CONFIG_COLOR_CONVERT_DISABLE           0x00000000
> +#define VIVS_DE_PATTERN_CONFIG_COLOR_CONVERT_ENABLE            0x00000020
> +#define VIVS_DE_PATTERN_CONFIG_INIT_TRIGGER__MASK              0x000000c0
> +#define VIVS_DE_PATTERN_CONFIG_INIT_TRIGGER__SHIFT             6
> +#define VIVS_DE_PATTERN_CONFIG_INIT_TRIGGER(x)                 (((x) << VIVS_DE_PATTERN_CONFIG_INIT_TRIGGER__SHIFT) & VIVS_DE_PATTERN_CONFIG_INIT_TRIGGER__MASK)
> +#define VIVS_DE_PATTERN_CONFIG_ORIGIN_X__MASK                  0x00070000
> +#define VIVS_DE_PATTERN_CONFIG_ORIGIN_X__SHIFT                 16
> +#define VIVS_DE_PATTERN_CONFIG_ORIGIN_X(x)                     (((x) << VIVS_DE_PATTERN_CONFIG_ORIGIN_X__SHIFT) & VIVS_DE_PATTERN_CONFIG_ORIGIN_X__MASK)
> +#define VIVS_DE_PATTERN_CONFIG_ORIGIN_Y__MASK                  0x00700000
> +#define VIVS_DE_PATTERN_CONFIG_ORIGIN_Y__SHIFT                 20
> +#define VIVS_DE_PATTERN_CONFIG_ORIGIN_Y(x)                     (((x) << VIVS_DE_PATTERN_CONFIG_ORIGIN_Y__SHIFT) & VIVS_DE_PATTERN_CONFIG_ORIGIN_Y__MASK)
> +
> +#define VIVS_DE_PATTERN_LOW                                    0x00001240
> +
> +#define VIVS_DE_PATTERN_HIGH                                   0x00001244
> +
> +#define VIVS_DE_PATTERN_MASK_LOW                               0x00001248
> +
> +#define VIVS_DE_PATTERN_MASK_HIGH                              0x0000124c
> +
> +#define VIVS_DE_PATTERN_BG_COLOR                               0x00001250
> +
> +#define VIVS_DE_PATTERN_FG_COLOR                               0x00001254
> +
> +#define VIVS_DE_ROP                                            0x0000125c
> +#define VIVS_DE_ROP_ROP_FG__MASK                               0x000000ff
> +#define VIVS_DE_ROP_ROP_FG__SHIFT                              0
> +#define VIVS_DE_ROP_ROP_FG(x)                                  (((x) << VIVS_DE_ROP_ROP_FG__SHIFT) & VIVS_DE_ROP_ROP_FG__MASK)
> +#define VIVS_DE_ROP_ROP_BG__MASK                               0x0000ff00
> +#define VIVS_DE_ROP_ROP_BG__SHIFT                              8
> +#define VIVS_DE_ROP_ROP_BG(x)                                  (((x) << VIVS_DE_ROP_ROP_BG__SHIFT) & VIVS_DE_ROP_ROP_BG__MASK)
> +#define VIVS_DE_ROP_TYPE__MASK                                 0x00300000
> +#define VIVS_DE_ROP_TYPE__SHIFT                                        20
> +#define VIVS_DE_ROP_TYPE_ROP2_PATTERN                          0x00000000
> +#define VIVS_DE_ROP_TYPE_ROP2_SOURCE                           0x00100000
> +#define VIVS_DE_ROP_TYPE_ROP3                                  0x00200000
> +#define VIVS_DE_ROP_TYPE_ROP4                                  0x00300000
> +
> +#define VIVS_DE_CLIP_TOP_LEFT                                  0x00001260
> +#define VIVS_DE_CLIP_TOP_LEFT_X__MASK                          0x00007fff
> +#define VIVS_DE_CLIP_TOP_LEFT_X__SHIFT                         0
> +#define VIVS_DE_CLIP_TOP_LEFT_X(x)                             (((x) << VIVS_DE_CLIP_TOP_LEFT_X__SHIFT) & VIVS_DE_CLIP_TOP_LEFT_X__MASK)
> +#define VIVS_DE_CLIP_TOP_LEFT_Y__MASK                          0x7fff0000
> +#define VIVS_DE_CLIP_TOP_LEFT_Y__SHIFT                         16
> +#define VIVS_DE_CLIP_TOP_LEFT_Y(x)                             (((x) << VIVS_DE_CLIP_TOP_LEFT_Y__SHIFT) & VIVS_DE_CLIP_TOP_LEFT_Y__MASK)
> +
> +#define VIVS_DE_CLIP_BOTTOM_RIGHT                              0x00001264
> +#define VIVS_DE_CLIP_BOTTOM_RIGHT_X__MASK                      0x00007fff
> +#define VIVS_DE_CLIP_BOTTOM_RIGHT_X__SHIFT                     0
> +#define VIVS_DE_CLIP_BOTTOM_RIGHT_X(x)                         (((x) << VIVS_DE_CLIP_BOTTOM_RIGHT_X__SHIFT) & VIVS_DE_CLIP_BOTTOM_RIGHT_X__MASK)
> +#define VIVS_DE_CLIP_BOTTOM_RIGHT_Y__MASK                      0x7fff0000
> +#define VIVS_DE_CLIP_BOTTOM_RIGHT_Y__SHIFT                     16
> +#define VIVS_DE_CLIP_BOTTOM_RIGHT_Y(x)                         (((x) << VIVS_DE_CLIP_BOTTOM_RIGHT_Y__SHIFT) & VIVS_DE_CLIP_BOTTOM_RIGHT_Y__MASK)
> +
> +#define VIVS_DE_CLEAR_BYTE_MASK                                        0x00001268
> +
> +#define VIVS_DE_CONFIG                                         0x0000126c
> +#define VIVS_DE_CONFIG_MIRROR_BLT_ENABLE__MASK                 0x00000001
> +#define VIVS_DE_CONFIG_MIRROR_BLT_ENABLE__SHIFT                        0
> +#define VIVS_DE_CONFIG_MIRROR_BLT_ENABLE_OFF                   0x00000000
> +#define VIVS_DE_CONFIG_MIRROR_BLT_ENABLE_ON                    0x00000001
> +#define VIVS_DE_CONFIG_MIRROR_BLT_MODE__MASK                   0x00000030
> +#define VIVS_DE_CONFIG_MIRROR_BLT_MODE__SHIFT                  4
> +#define VIVS_DE_CONFIG_MIRROR_BLT_MODE_NORMAL                  0x00000000
> +#define VIVS_DE_CONFIG_MIRROR_BLT_MODE_HMIRROR                 0x00000010
> +#define VIVS_DE_CONFIG_MIRROR_BLT_MODE_VMIRROR                 0x00000020
> +#define VIVS_DE_CONFIG_MIRROR_BLT_MODE_FULL_MIRROR             0x00000030
> +#define VIVS_DE_CONFIG_SOURCE_SELECT__MASK                     0x00070000
> +#define VIVS_DE_CONFIG_SOURCE_SELECT__SHIFT                    16
> +#define VIVS_DE_CONFIG_SOURCE_SELECT(x)                                (((x) << VIVS_DE_CONFIG_SOURCE_SELECT__SHIFT) & VIVS_DE_CONFIG_SOURCE_SELECT__MASK)
> +#define VIVS_DE_CONFIG_DESTINATION_SELECT__MASK                        0x00300000
> +#define VIVS_DE_CONFIG_DESTINATION_SELECT__SHIFT               20
> +#define VIVS_DE_CONFIG_DESTINATION_SELECT(x)                   (((x) << VIVS_DE_CONFIG_DESTINATION_SELECT__SHIFT) & VIVS_DE_CONFIG_DESTINATION_SELECT__MASK)
> +
> +#define VIVS_DE_CLEAR_PIXEL_VALUE_LOW                          0x00001270
> +
> +#define VIVS_DE_CLEAR_PIXEL_VALUE_HIGH                         0x00001274
> +
> +#define VIVS_DE_SRC_ORIGIN_FRACTION                            0x00001278
> +#define VIVS_DE_SRC_ORIGIN_FRACTION_X__MASK                    0x0000ffff
> +#define VIVS_DE_SRC_ORIGIN_FRACTION_X__SHIFT                   0
> +#define VIVS_DE_SRC_ORIGIN_FRACTION_X(x)                       (((x) << VIVS_DE_SRC_ORIGIN_FRACTION_X__SHIFT) & VIVS_DE_SRC_ORIGIN_FRACTION_X__MASK)
> +#define VIVS_DE_SRC_ORIGIN_FRACTION_Y__MASK                    0xffff0000
> +#define VIVS_DE_SRC_ORIGIN_FRACTION_Y__SHIFT                   16
> +#define VIVS_DE_SRC_ORIGIN_FRACTION_Y(x)                       (((x) << VIVS_DE_SRC_ORIGIN_FRACTION_Y__SHIFT) & VIVS_DE_SRC_ORIGIN_FRACTION_Y__MASK)
> +
> +#define VIVS_DE_ALPHA_CONTROL                                  0x0000127c
> +#define VIVS_DE_ALPHA_CONTROL_ENABLE__MASK                     0x00000001
> +#define VIVS_DE_ALPHA_CONTROL_ENABLE__SHIFT                    0
> +#define VIVS_DE_ALPHA_CONTROL_ENABLE_OFF                       0x00000000
> +#define VIVS_DE_ALPHA_CONTROL_ENABLE_ON                                0x00000001
> +#define VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__MASK      0x00ff0000
> +#define VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__SHIFT     16
> +#define VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA(x)         (((x) << VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__SHIFT) & VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__MASK)
> +#define VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__MASK      0xff000000
> +#define VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__SHIFT     24
> +#define VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA(x)         (((x) << VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__SHIFT) & VIVS_DE_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__MASK)
> +
> +#define VIVS_DE_ALPHA_MODES                                    0x00001280
> +#define VIVS_DE_ALPHA_MODES_SRC_ALPHA_MODE__MASK               0x00000001
> +#define VIVS_DE_ALPHA_MODES_SRC_ALPHA_MODE__SHIFT              0
> +#define VIVS_DE_ALPHA_MODES_SRC_ALPHA_MODE_NORMAL              0x00000000
> +#define VIVS_DE_ALPHA_MODES_SRC_ALPHA_MODE_INVERSED            0x00000001
> +#define VIVS_DE_ALPHA_MODES_DST_ALPHA_MODE__MASK               0x00000010
> +#define VIVS_DE_ALPHA_MODES_DST_ALPHA_MODE__SHIFT              4
> +#define VIVS_DE_ALPHA_MODES_DST_ALPHA_MODE_NORMAL              0x00000000
> +#define VIVS_DE_ALPHA_MODES_DST_ALPHA_MODE_INVERSED            0x00000010
> +#define VIVS_DE_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE__MASK                0x00000300
> +#define VIVS_DE_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE__SHIFT       8
> +#define VIVS_DE_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE_NORMAL       0x00000000
> +#define VIVS_DE_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE_GLOBAL       0x00000100
> +#define VIVS_DE_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE_SCALED       0x00000200
> +#define VIVS_DE_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE__MASK                0x00003000
> +#define VIVS_DE_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE__SHIFT       12
> +#define VIVS_DE_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE_NORMAL       0x00000000
> +#define VIVS_DE_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE_GLOBAL       0x00001000
> +#define VIVS_DE_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE_SCALED       0x00002000
> +#define VIVS_DE_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY__MASK      0x00010000
> +#define VIVS_DE_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY__SHIFT     16
> +#define VIVS_DE_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY_DISABLE    0x00000000
> +#define VIVS_DE_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY_ENABLE     0x00010000
> +#define VIVS_DE_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY__MASK      0x00100000
> +#define VIVS_DE_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY__SHIFT     20
> +#define VIVS_DE_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY_DISABLE    0x00000000
> +#define VIVS_DE_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY_ENABLE     0x00100000
> +#define VIVS_DE_ALPHA_MODES_SRC_BLENDING_MODE__MASK            0x07000000
> +#define VIVS_DE_ALPHA_MODES_SRC_BLENDING_MODE__SHIFT           24
> +#define VIVS_DE_ALPHA_MODES_SRC_BLENDING_MODE(x)               (((x) << VIVS_DE_ALPHA_MODES_SRC_BLENDING_MODE__SHIFT) & VIVS_DE_ALPHA_MODES_SRC_BLENDING_MODE__MASK)
> +#define VIVS_DE_ALPHA_MODES_SRC_ALPHA_FACTOR__MASK             0x08000000
> +#define VIVS_DE_ALPHA_MODES_SRC_ALPHA_FACTOR__SHIFT            27
> +#define VIVS_DE_ALPHA_MODES_SRC_ALPHA_FACTOR_DISABLE           0x00000000
> +#define VIVS_DE_ALPHA_MODES_SRC_ALPHA_FACTOR_ENABLE            0x08000000
> +#define VIVS_DE_ALPHA_MODES_DST_BLENDING_MODE__MASK            0x70000000
> +#define VIVS_DE_ALPHA_MODES_DST_BLENDING_MODE__SHIFT           28
> +#define VIVS_DE_ALPHA_MODES_DST_BLENDING_MODE(x)               (((x) << VIVS_DE_ALPHA_MODES_DST_BLENDING_MODE__SHIFT) & VIVS_DE_ALPHA_MODES_DST_BLENDING_MODE__MASK)
> +#define VIVS_DE_ALPHA_MODES_DST_ALPHA_FACTOR__MASK             0x80000000
> +#define VIVS_DE_ALPHA_MODES_DST_ALPHA_FACTOR__SHIFT            31
> +#define VIVS_DE_ALPHA_MODES_DST_ALPHA_FACTOR_DISABLE           0x00000000
> +#define VIVS_DE_ALPHA_MODES_DST_ALPHA_FACTOR_ENABLE            0x80000000
> +
> +#define VIVS_DE_UPLANE_ADDRESS                                 0x00001284
> +
> +#define VIVS_DE_UPLANE_STRIDE                                  0x00001288
> +#define VIVS_DE_UPLANE_STRIDE_STRIDE__MASK                     0x0003ffff
> +#define VIVS_DE_UPLANE_STRIDE_STRIDE__SHIFT                    0
> +#define VIVS_DE_UPLANE_STRIDE_STRIDE(x)                                (((x) << VIVS_DE_UPLANE_STRIDE_STRIDE__SHIFT) & VIVS_DE_UPLANE_STRIDE_STRIDE__MASK)
> +
> +#define VIVS_DE_VPLANE_ADDRESS                                 0x0000128c
> +
> +#define VIVS_DE_VPLANE_STRIDE                                  0x00001290
> +#define VIVS_DE_VPLANE_STRIDE_STRIDE__MASK                     0x0003ffff
> +#define VIVS_DE_VPLANE_STRIDE_STRIDE__SHIFT                    0
> +#define VIVS_DE_VPLANE_STRIDE_STRIDE(x)                                (((x) << VIVS_DE_VPLANE_STRIDE_STRIDE__SHIFT) & VIVS_DE_VPLANE_STRIDE_STRIDE__MASK)
> +
> +#define VIVS_DE_VR_CONFIG                                      0x00001294
> +#define VIVS_DE_VR_CONFIG_START__MASK                          0x00000003
> +#define VIVS_DE_VR_CONFIG_START__SHIFT                         0
> +#define VIVS_DE_VR_CONFIG_START_HORIZONTAL_BLIT                        0x00000000
> +#define VIVS_DE_VR_CONFIG_START_VERTICAL_BLIT                  0x00000001
> +#define VIVS_DE_VR_CONFIG_START_ONE_PASS_BLIT                  0x00000002
> +#define VIVS_DE_VR_CONFIG_START_MASK                           0x00000008
> +
> +#define VIVS_DE_VR_SOURCE_IMAGE_LOW                            0x00001298
> +#define VIVS_DE_VR_SOURCE_IMAGE_LOW_LEFT__MASK                 0x0000ffff
> +#define VIVS_DE_VR_SOURCE_IMAGE_LOW_LEFT__SHIFT                        0
> +#define VIVS_DE_VR_SOURCE_IMAGE_LOW_LEFT(x)                    (((x) << VIVS_DE_VR_SOURCE_IMAGE_LOW_LEFT__SHIFT) & VIVS_DE_VR_SOURCE_IMAGE_LOW_LEFT__MASK)
> +#define VIVS_DE_VR_SOURCE_IMAGE_LOW_TOP__MASK                  0xffff0000
> +#define VIVS_DE_VR_SOURCE_IMAGE_LOW_TOP__SHIFT                 16
> +#define VIVS_DE_VR_SOURCE_IMAGE_LOW_TOP(x)                     (((x) << VIVS_DE_VR_SOURCE_IMAGE_LOW_TOP__SHIFT) & VIVS_DE_VR_SOURCE_IMAGE_LOW_TOP__MASK)
> +
> +#define VIVS_DE_VR_SOURCE_IMAGE_HIGH                           0x0000129c
> +#define VIVS_DE_VR_SOURCE_IMAGE_HIGH_RIGHT__MASK               0x0000ffff
> +#define VIVS_DE_VR_SOURCE_IMAGE_HIGH_RIGHT__SHIFT              0
> +#define VIVS_DE_VR_SOURCE_IMAGE_HIGH_RIGHT(x)                  (((x) << VIVS_DE_VR_SOURCE_IMAGE_HIGH_RIGHT__SHIFT) & VIVS_DE_VR_SOURCE_IMAGE_HIGH_RIGHT__MASK)
> +#define VIVS_DE_VR_SOURCE_IMAGE_HIGH_BOTTOM__MASK              0xffff0000
> +#define VIVS_DE_VR_SOURCE_IMAGE_HIGH_BOTTOM__SHIFT             16
> +#define VIVS_DE_VR_SOURCE_IMAGE_HIGH_BOTTOM(x)                 (((x) << VIVS_DE_VR_SOURCE_IMAGE_HIGH_BOTTOM__SHIFT) & VIVS_DE_VR_SOURCE_IMAGE_HIGH_BOTTOM__MASK)
> +
> +#define VIVS_DE_VR_SOURCE_ORIGIN_LOW                           0x000012a0
> +#define VIVS_DE_VR_SOURCE_ORIGIN_LOW_X__MASK                   0xffffffff
> +#define VIVS_DE_VR_SOURCE_ORIGIN_LOW_X__SHIFT                  0
> +#define VIVS_DE_VR_SOURCE_ORIGIN_LOW_X(x)                      (((x) << VIVS_DE_VR_SOURCE_ORIGIN_LOW_X__SHIFT) & VIVS_DE_VR_SOURCE_ORIGIN_LOW_X__MASK)
> +
> +#define VIVS_DE_VR_SOURCE_ORIGIN_HIGH                          0x000012a4
> +#define VIVS_DE_VR_SOURCE_ORIGIN_HIGH_Y__MASK                  0xffffffff
> +#define VIVS_DE_VR_SOURCE_ORIGIN_HIGH_Y__SHIFT                 0
> +#define VIVS_DE_VR_SOURCE_ORIGIN_HIGH_Y(x)                     (((x) << VIVS_DE_VR_SOURCE_ORIGIN_HIGH_Y__SHIFT) & VIVS_DE_VR_SOURCE_ORIGIN_HIGH_Y__MASK)
> +
> +#define VIVS_DE_VR_TARGET_WINDOW_LOW                           0x000012a8
> +#define VIVS_DE_VR_TARGET_WINDOW_LOW_LEFT__MASK                        0x0000ffff
> +#define VIVS_DE_VR_TARGET_WINDOW_LOW_LEFT__SHIFT               0
> +#define VIVS_DE_VR_TARGET_WINDOW_LOW_LEFT(x)                   (((x) << VIVS_DE_VR_TARGET_WINDOW_LOW_LEFT__SHIFT) & VIVS_DE_VR_TARGET_WINDOW_LOW_LEFT__MASK)
> +#define VIVS_DE_VR_TARGET_WINDOW_LOW_TOP__MASK                 0xffff0000
> +#define VIVS_DE_VR_TARGET_WINDOW_LOW_TOP__SHIFT                        16
> +#define VIVS_DE_VR_TARGET_WINDOW_LOW_TOP(x)                    (((x) << VIVS_DE_VR_TARGET_WINDOW_LOW_TOP__SHIFT) & VIVS_DE_VR_TARGET_WINDOW_LOW_TOP__MASK)
> +
> +#define VIVS_DE_VR_TARGET_WINDOW_HIGH                          0x000012ac
> +#define VIVS_DE_VR_TARGET_WINDOW_HIGH_RIGHT__MASK              0x0000ffff
> +#define VIVS_DE_VR_TARGET_WINDOW_HIGH_RIGHT__SHIFT             0
> +#define VIVS_DE_VR_TARGET_WINDOW_HIGH_RIGHT(x)                 (((x) << VIVS_DE_VR_TARGET_WINDOW_HIGH_RIGHT__SHIFT) & VIVS_DE_VR_TARGET_WINDOW_HIGH_RIGHT__MASK)
> +#define VIVS_DE_VR_TARGET_WINDOW_HIGH_BOTTOM__MASK             0xffff0000
> +#define VIVS_DE_VR_TARGET_WINDOW_HIGH_BOTTOM__SHIFT            16
> +#define VIVS_DE_VR_TARGET_WINDOW_HIGH_BOTTOM(x)                        (((x) << VIVS_DE_VR_TARGET_WINDOW_HIGH_BOTTOM__SHIFT) & VIVS_DE_VR_TARGET_WINDOW_HIGH_BOTTOM__MASK)
> +
> +#define VIVS_DE_PE_CONFIG                                      0x000012b0
> +#define VIVS_DE_PE_CONFIG_DESTINATION_FETCH__MASK              0x00000003
> +#define VIVS_DE_PE_CONFIG_DESTINATION_FETCH__SHIFT             0
> +#define VIVS_DE_PE_CONFIG_DESTINATION_FETCH_DISABLE            0x00000000
> +#define VIVS_DE_PE_CONFIG_DESTINATION_FETCH_DEFAULT            0x00000001
> +#define VIVS_DE_PE_CONFIG_DESTINATION_FETCH_ALWAYS             0x00000002
> +#define VIVS_DE_PE_CONFIG_DESTINATION_FETCH_MASK               0x00000008
> +
> +#define VIVS_DE_DEST_ROTATION_HEIGHT                           0x000012b4
> +#define VIVS_DE_DEST_ROTATION_HEIGHT_HEIGHT__MASK              0x0000ffff
> +#define VIVS_DE_DEST_ROTATION_HEIGHT_HEIGHT__SHIFT             0
> +#define VIVS_DE_DEST_ROTATION_HEIGHT_HEIGHT(x)                 (((x) << VIVS_DE_DEST_ROTATION_HEIGHT_HEIGHT__SHIFT) & VIVS_DE_DEST_ROTATION_HEIGHT_HEIGHT__MASK)
> +
> +#define VIVS_DE_SRC_ROTATION_HEIGHT                            0x000012b8
> +#define VIVS_DE_SRC_ROTATION_HEIGHT_HEIGHT__MASK               0x0000ffff
> +#define VIVS_DE_SRC_ROTATION_HEIGHT_HEIGHT__SHIFT              0
> +#define VIVS_DE_SRC_ROTATION_HEIGHT_HEIGHT(x)                  (((x) << VIVS_DE_SRC_ROTATION_HEIGHT_HEIGHT__SHIFT) & VIVS_DE_SRC_ROTATION_HEIGHT_HEIGHT__MASK)
> +
> +#define VIVS_DE_ROT_ANGLE                                      0x000012bc
> +#define VIVS_DE_ROT_ANGLE_SRC__MASK                            0x00000007
> +#define VIVS_DE_ROT_ANGLE_SRC__SHIFT                           0
> +#define VIVS_DE_ROT_ANGLE_SRC(x)                               (((x) << VIVS_DE_ROT_ANGLE_SRC__SHIFT) & VIVS_DE_ROT_ANGLE_SRC__MASK)
> +#define VIVS_DE_ROT_ANGLE_DST__MASK                            0x00000038
> +#define VIVS_DE_ROT_ANGLE_DST__SHIFT                           3
> +#define VIVS_DE_ROT_ANGLE_DST(x)                               (((x) << VIVS_DE_ROT_ANGLE_DST__SHIFT) & VIVS_DE_ROT_ANGLE_DST__MASK)
> +#define VIVS_DE_ROT_ANGLE_SRC_MASK                             0x00000100
> +#define VIVS_DE_ROT_ANGLE_DST_MASK                             0x00000200
> +#define VIVS_DE_ROT_ANGLE_SRC_MIRROR__MASK                     0x00003000
> +#define VIVS_DE_ROT_ANGLE_SRC_MIRROR__SHIFT                    12
> +#define VIVS_DE_ROT_ANGLE_SRC_MIRROR(x)                                (((x) << VIVS_DE_ROT_ANGLE_SRC_MIRROR__SHIFT) & VIVS_DE_ROT_ANGLE_SRC_MIRROR__MASK)
> +#define VIVS_DE_ROT_ANGLE_SRC_MIRROR_MASK                      0x00008000
> +#define VIVS_DE_ROT_ANGLE_DST_MIRROR__MASK                     0x00030000
> +#define VIVS_DE_ROT_ANGLE_DST_MIRROR__SHIFT                    16
> +#define VIVS_DE_ROT_ANGLE_DST_MIRROR(x)                                (((x) << VIVS_DE_ROT_ANGLE_DST_MIRROR__SHIFT) & VIVS_DE_ROT_ANGLE_DST_MIRROR__MASK)
> +#define VIVS_DE_ROT_ANGLE_DST_MIRROR_MASK                      0x00080000
> +
> +#define VIVS_DE_CLEAR_PIXEL_VALUE32                            0x000012c0
> +
> +#define VIVS_DE_DEST_COLOR_KEY                                 0x000012c4
> +
> +#define VIVS_DE_GLOBAL_SRC_COLOR                               0x000012c8
> +
> +#define VIVS_DE_GLOBAL_DEST_COLOR                              0x000012cc
> +
> +#define VIVS_DE_COLOR_MULTIPLY_MODES                           0x000012d0
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY__MASK     0x00000001
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY__SHIFT    0
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY_DISABLE   0x00000000
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY_ENABLE    0x00000001
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY__MASK     0x00000010
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY__SHIFT    4
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY_DISABLE   0x00000000
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY_ENABLE    0x00000010
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY__MASK      0x00000300
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY__SHIFT     8
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY_DISABLE    0x00000000
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY_ALPHA      0x00000100
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY_COLOR      0x00000200
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY__MASK      0x00100000
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY__SHIFT     20
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY_DISABLE    0x00000000
> +#define VIVS_DE_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY_ENABLE     0x00100000
> +
> +#define VIVS_DE_PE_TRANSPARENCY                                        0x000012d4
> +#define VIVS_DE_PE_TRANSPARENCY_SOURCE__MASK                   0x00000003
> +#define VIVS_DE_PE_TRANSPARENCY_SOURCE__SHIFT                  0
> +#define VIVS_DE_PE_TRANSPARENCY_SOURCE_OPAQUE                  0x00000000
> +#define VIVS_DE_PE_TRANSPARENCY_SOURCE_MASK                    0x00000001
> +#define VIVS_DE_PE_TRANSPARENCY_SOURCE_KEY                     0x00000002
> +#define VIVS_DE_PE_TRANSPARENCY_PATTERN__MASK                  0x00000030
> +#define VIVS_DE_PE_TRANSPARENCY_PATTERN__SHIFT                 4
> +#define VIVS_DE_PE_TRANSPARENCY_PATTERN_OPAQUE                 0x00000000
> +#define VIVS_DE_PE_TRANSPARENCY_PATTERN_MASK                   0x00000010
> +#define VIVS_DE_PE_TRANSPARENCY_PATTERN_KEY                    0x00000020
> +#define VIVS_DE_PE_TRANSPARENCY_DESTINATION__MASK              0x00000300
> +#define VIVS_DE_PE_TRANSPARENCY_DESTINATION__SHIFT             8
> +#define VIVS_DE_PE_TRANSPARENCY_DESTINATION_OPAQUE             0x00000000
> +#define VIVS_DE_PE_TRANSPARENCY_DESTINATION_MASK               0x00000100
> +#define VIVS_DE_PE_TRANSPARENCY_DESTINATION_KEY                        0x00000200
> +#define VIVS_DE_PE_TRANSPARENCY_TRANSPARENCY_MASK              0x00001000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_SRC_OVERRIDE__MASK         0x00030000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_SRC_OVERRIDE__SHIFT                16
> +#define VIVS_DE_PE_TRANSPARENCY_USE_SRC_OVERRIDE_DEFAULT       0x00000000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_SRC_OVERRIDE_USE_ENABLE    0x00010000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_SRC_OVERRIDE_USE_DISABLE   0x00020000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_PAT_OVERRIDE__MASK         0x00300000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_PAT_OVERRIDE__SHIFT                20
> +#define VIVS_DE_PE_TRANSPARENCY_USE_PAT_OVERRIDE_DEFAULT       0x00000000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_PAT_OVERRIDE_USE_ENABLE    0x00100000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_PAT_OVERRIDE_USE_DISABLE   0x00200000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_DST_OVERRIDE__MASK         0x03000000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_DST_OVERRIDE__SHIFT                24
> +#define VIVS_DE_PE_TRANSPARENCY_USE_DST_OVERRIDE_DEFAULT       0x00000000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_DST_OVERRIDE_USE_ENABLE    0x01000000
> +#define VIVS_DE_PE_TRANSPARENCY_USE_DST_OVERRIDE_USE_DISABLE   0x02000000
> +#define VIVS_DE_PE_TRANSPARENCY_RESOURCE_OVERRIDE_MASK         0x10000000
> +#define VIVS_DE_PE_TRANSPARENCY_DFB_COLOR_KEY__MASK            0x20000000
> +#define VIVS_DE_PE_TRANSPARENCY_DFB_COLOR_KEY__SHIFT           29
> +#define VIVS_DE_PE_TRANSPARENCY_DFB_COLOR_KEY_DISABLE          0x00000000
> +#define VIVS_DE_PE_TRANSPARENCY_DFB_COLOR_KEY_ENABLE           0x20000000
> +#define VIVS_DE_PE_TRANSPARENCY_DFB_COLOR_KEY_MASK             0x80000000
> +
> +#define VIVS_DE_PE_CONTROL                                     0x000012d8
> +#define VIVS_DE_PE_CONTROL_YUV__MASK                           0x00000001
> +#define VIVS_DE_PE_CONTROL_YUV__SHIFT                          0
> +#define VIVS_DE_PE_CONTROL_YUV_601                             0x00000000
> +#define VIVS_DE_PE_CONTROL_YUV_709                             0x00000001
> +#define VIVS_DE_PE_CONTROL_YUV_MASK                            0x00000008
> +#define VIVS_DE_PE_CONTROL_UV_SWIZZLE__MASK                    0x00000010
> +#define VIVS_DE_PE_CONTROL_UV_SWIZZLE__SHIFT                   4
> +#define VIVS_DE_PE_CONTROL_UV_SWIZZLE_UV                       0x00000000
> +#define VIVS_DE_PE_CONTROL_UV_SWIZZLE_VU                       0x00000010
> +#define VIVS_DE_PE_CONTROL_UV_SWIZZLE_MASK                     0x00000080
> +#define VIVS_DE_PE_CONTROL_YUVRGB__MASK                                0x00000100
> +#define VIVS_DE_PE_CONTROL_YUVRGB__SHIFT                       8
> +#define VIVS_DE_PE_CONTROL_YUVRGB_DISABLE                      0x00000000
> +#define VIVS_DE_PE_CONTROL_YUVRGB_ENABLE                       0x00000100
> +#define VIVS_DE_PE_CONTROL_YUVRGB_MASK                         0x00000800
> +
> +#define VIVS_DE_SRC_COLOR_KEY_HIGH                             0x000012dc
> +
> +#define VIVS_DE_DEST_COLOR_KEY_HIGH                            0x000012e0
> +
> +#define VIVS_DE_VR_CONFIG_EX                                   0x000012e4
> +#define VIVS_DE_VR_CONFIG_EX_VERTICAL_LINE_WIDTH__MASK         0x00000003
> +#define VIVS_DE_VR_CONFIG_EX_VERTICAL_LINE_WIDTH__SHIFT                0
> +#define VIVS_DE_VR_CONFIG_EX_VERTICAL_LINE_WIDTH_AUTO          0x00000000
> +#define VIVS_DE_VR_CONFIG_EX_VERTICAL_LINE_WIDTH_PIXELS16      0x00000001
> +#define VIVS_DE_VR_CONFIG_EX_VERTICAL_LINE_WIDTH_PIXELS32      0x00000002
> +#define VIVS_DE_VR_CONFIG_EX_VERTICAL_LINE_WIDTH_MASK          0x00000008
> +#define VIVS_DE_VR_CONFIG_EX_FILTER_TAP__MASK                  0x000000f0
> +#define VIVS_DE_VR_CONFIG_EX_FILTER_TAP__SHIFT                 4
> +#define VIVS_DE_VR_CONFIG_EX_FILTER_TAP(x)                     (((x) << VIVS_DE_VR_CONFIG_EX_FILTER_TAP__SHIFT) & VIVS_DE_VR_CONFIG_EX_FILTER_TAP__MASK)
> +#define VIVS_DE_VR_CONFIG_EX_FILTER_TAP_MASK                   0x00000100
> +
> +#define VIVS_DE_PE_DITHER_LOW                                  0x000012e8
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X0_Y0__MASK                        0x0000000f
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X0_Y0__SHIFT               0
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X0_Y0(x)                   (((x) << VIVS_DE_PE_DITHER_LOW_PIXEL_X0_Y0__SHIFT) & VIVS_DE_PE_DITHER_LOW_PIXEL_X0_Y0__MASK)
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X1_Y0__MASK                        0x000000f0
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X1_Y0__SHIFT               4
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X1_Y0(x)                   (((x) << VIVS_DE_PE_DITHER_LOW_PIXEL_X1_Y0__SHIFT) & VIVS_DE_PE_DITHER_LOW_PIXEL_X1_Y0__MASK)
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X2_Y0__MASK                        0x00000f00
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X2_Y0__SHIFT               8
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X2_Y0(x)                   (((x) << VIVS_DE_PE_DITHER_LOW_PIXEL_X2_Y0__SHIFT) & VIVS_DE_PE_DITHER_LOW_PIXEL_X2_Y0__MASK)
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X3_Y0__MASK                        0x0000f000
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X3_Y0__SHIFT               12
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X3_Y0(x)                   (((x) << VIVS_DE_PE_DITHER_LOW_PIXEL_X3_Y0__SHIFT) & VIVS_DE_PE_DITHER_LOW_PIXEL_X3_Y0__MASK)
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X0_Y1__MASK                        0x000f0000
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X0_Y1__SHIFT               16
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X0_Y1(x)                   (((x) << VIVS_DE_PE_DITHER_LOW_PIXEL_X0_Y1__SHIFT) & VIVS_DE_PE_DITHER_LOW_PIXEL_X0_Y1__MASK)
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X1_Y1__MASK                        0x00f00000
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X1_Y1__SHIFT               20
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X1_Y1(x)                   (((x) << VIVS_DE_PE_DITHER_LOW_PIXEL_X1_Y1__SHIFT) & VIVS_DE_PE_DITHER_LOW_PIXEL_X1_Y1__MASK)
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X2_Y1__MASK                        0x0f000000
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X2_Y1__SHIFT               24
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X2_Y1(x)                   (((x) << VIVS_DE_PE_DITHER_LOW_PIXEL_X2_Y1__SHIFT) & VIVS_DE_PE_DITHER_LOW_PIXEL_X2_Y1__MASK)
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X3_Y1__MASK                        0xf0000000
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X3_Y1__SHIFT               28
> +#define VIVS_DE_PE_DITHER_LOW_PIXEL_X3_Y1(x)                   (((x) << VIVS_DE_PE_DITHER_LOW_PIXEL_X3_Y1__SHIFT) & VIVS_DE_PE_DITHER_LOW_PIXEL_X3_Y1__MASK)
> +
> +#define VIVS_DE_PE_DITHER_HIGH                                 0x000012ec
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X0_Y2__MASK               0x0000000f
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X0_Y2__SHIFT              0
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X0_Y2(x)                  (((x) << VIVS_DE_PE_DITHER_HIGH_PIXEL_X0_Y2__SHIFT) & VIVS_DE_PE_DITHER_HIGH_PIXEL_X0_Y2__MASK)
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X1_Y2__MASK               0x000000f0
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X1_Y2__SHIFT              4
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X1_Y2(x)                  (((x) << VIVS_DE_PE_DITHER_HIGH_PIXEL_X1_Y2__SHIFT) & VIVS_DE_PE_DITHER_HIGH_PIXEL_X1_Y2__MASK)
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X2_Y2__MASK               0x00000f00
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X2_Y2__SHIFT              8
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X2_Y2(x)                  (((x) << VIVS_DE_PE_DITHER_HIGH_PIXEL_X2_Y2__SHIFT) & VIVS_DE_PE_DITHER_HIGH_PIXEL_X2_Y2__MASK)
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X3_Y2__MASK               0x0000f000
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X3_Y2__SHIFT              12
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X3_Y2(x)                  (((x) << VIVS_DE_PE_DITHER_HIGH_PIXEL_X3_Y2__SHIFT) & VIVS_DE_PE_DITHER_HIGH_PIXEL_X3_Y2__MASK)
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X0_Y3__MASK               0x000f0000
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X0_Y3__SHIFT              16
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X0_Y3(x)                  (((x) << VIVS_DE_PE_DITHER_HIGH_PIXEL_X0_Y3__SHIFT) & VIVS_DE_PE_DITHER_HIGH_PIXEL_X0_Y3__MASK)
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X1_Y3__MASK               0x00f00000
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X1_Y3__SHIFT              20
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X1_Y3(x)                  (((x) << VIVS_DE_PE_DITHER_HIGH_PIXEL_X1_Y3__SHIFT) & VIVS_DE_PE_DITHER_HIGH_PIXEL_X1_Y3__MASK)
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X2_Y3__MASK               0x0f000000
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X2_Y3__SHIFT              24
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X2_Y3(x)                  (((x) << VIVS_DE_PE_DITHER_HIGH_PIXEL_X2_Y3__SHIFT) & VIVS_DE_PE_DITHER_HIGH_PIXEL_X2_Y3__MASK)
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X3_Y3__MASK               0xf0000000
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X3_Y3__SHIFT              28
> +#define VIVS_DE_PE_DITHER_HIGH_PIXEL_X3_Y3(x)                  (((x) << VIVS_DE_PE_DITHER_HIGH_PIXEL_X3_Y3__SHIFT) & VIVS_DE_PE_DITHER_HIGH_PIXEL_X3_Y3__MASK)
> +
> +#define VIVS_DE_BW_CONFIG                                      0x000012f0
> +#define VIVS_DE_BW_CONFIG_BLOCK_CONFIG__MASK                   0x00000001
> +#define VIVS_DE_BW_CONFIG_BLOCK_CONFIG__SHIFT                  0
> +#define VIVS_DE_BW_CONFIG_BLOCK_CONFIG_AUTO                    0x00000000
> +#define VIVS_DE_BW_CONFIG_BLOCK_CONFIG_CUSTOMIZE               0x00000001
> +#define VIVS_DE_BW_CONFIG_BLOCK_CONFIG_MASK                    0x00000008
> +#define VIVS_DE_BW_CONFIG_BLOCK_WALK_DIRECTION__MASK           0x00000010
> +#define VIVS_DE_BW_CONFIG_BLOCK_WALK_DIRECTION__SHIFT          4
> +#define VIVS_DE_BW_CONFIG_BLOCK_WALK_DIRECTION_RIGHT_BOTTOM    0x00000000
> +#define VIVS_DE_BW_CONFIG_BLOCK_WALK_DIRECTION_BOTTOM_RIGHT    0x00000010
> +#define VIVS_DE_BW_CONFIG_BLOCK_WALK_DIRECTION_MASK            0x00000080
> +#define VIVS_DE_BW_CONFIG_TILE_WALK_DIRECTION__MASK            0x00000100
> +#define VIVS_DE_BW_CONFIG_TILE_WALK_DIRECTION__SHIFT           8
> +#define VIVS_DE_BW_CONFIG_TILE_WALK_DIRECTION_RIGHT_BOTTOM     0x00000000
> +#define VIVS_DE_BW_CONFIG_TILE_WALK_DIRECTION_BOTTOM_RIGHT     0x00000100
> +#define VIVS_DE_BW_CONFIG_TILE_WALK_DIRECTION_MASK             0x00000800
> +#define VIVS_DE_BW_CONFIG_PIXEL_WALK_DIRECTION__MASK           0x00001000
> +#define VIVS_DE_BW_CONFIG_PIXEL_WALK_DIRECTION__SHIFT          12
> +#define VIVS_DE_BW_CONFIG_PIXEL_WALK_DIRECTION_RIGHT_BOTTOM    0x00000000
> +#define VIVS_DE_BW_CONFIG_PIXEL_WALK_DIRECTION_BOTTOM_RIGHT    0x00001000
> +#define VIVS_DE_BW_CONFIG_PIXEL_WALK_DIRECTION_MASK            0x00008000
> +
> +#define VIVS_DE_BW_BLOCK_SIZE                                  0x000012f4
> +#define VIVS_DE_BW_BLOCK_SIZE_WIDTH__MASK                      0x0000ffff
> +#define VIVS_DE_BW_BLOCK_SIZE_WIDTH__SHIFT                     0
> +#define VIVS_DE_BW_BLOCK_SIZE_WIDTH(x)                         (((x) << VIVS_DE_BW_BLOCK_SIZE_WIDTH__SHIFT) & VIVS_DE_BW_BLOCK_SIZE_WIDTH__MASK)
> +#define VIVS_DE_BW_BLOCK_SIZE_HEIGHT__MASK                     0xffff0000
> +#define VIVS_DE_BW_BLOCK_SIZE_HEIGHT__SHIFT                    16
> +#define VIVS_DE_BW_BLOCK_SIZE_HEIGHT(x)                                (((x) << VIVS_DE_BW_BLOCK_SIZE_HEIGHT__SHIFT) & VIVS_DE_BW_BLOCK_SIZE_HEIGHT__MASK)
> +
> +#define VIVS_DE_BW_TILE_SIZE                                   0x000012f8
> +#define VIVS_DE_BW_TILE_SIZE_WIDTH__MASK                       0x0000ffff
> +#define VIVS_DE_BW_TILE_SIZE_WIDTH__SHIFT                      0
> +#define VIVS_DE_BW_TILE_SIZE_WIDTH(x)                          (((x) << VIVS_DE_BW_TILE_SIZE_WIDTH__SHIFT) & VIVS_DE_BW_TILE_SIZE_WIDTH__MASK)
> +#define VIVS_DE_BW_TILE_SIZE_HEIGHT__MASK                      0xffff0000
> +#define VIVS_DE_BW_TILE_SIZE_HEIGHT__SHIFT                     16
> +#define VIVS_DE_BW_TILE_SIZE_HEIGHT(x)                         (((x) << VIVS_DE_BW_TILE_SIZE_HEIGHT__SHIFT) & VIVS_DE_BW_TILE_SIZE_HEIGHT__MASK)
> +
> +#define VIVS_DE_BW_BLOCK_MASK                                  0x000012fc
> +#define VIVS_DE_BW_BLOCK_MASK_HORIZONTAL__MASK                 0x0000ffff
> +#define VIVS_DE_BW_BLOCK_MASK_HORIZONTAL__SHIFT                        0
> +#define VIVS_DE_BW_BLOCK_MASK_HORIZONTAL(x)                    (((x) << VIVS_DE_BW_BLOCK_MASK_HORIZONTAL__SHIFT) & VIVS_DE_BW_BLOCK_MASK_HORIZONTAL__MASK)
> +#define VIVS_DE_BW_BLOCK_MASK_VERTICAL__MASK                   0xffff0000
> +#define VIVS_DE_BW_BLOCK_MASK_VERTICAL__SHIFT                  16
> +#define VIVS_DE_BW_BLOCK_MASK_VERTICAL(x)                      (((x) << VIVS_DE_BW_BLOCK_MASK_VERTICAL__SHIFT) & VIVS_DE_BW_BLOCK_MASK_VERTICAL__MASK)
> +
> +#define VIVS_DE_SRC_EX_CONFIG                                  0x00001300
> +#define VIVS_DE_SRC_EX_CONFIG_MULTI_TILED__MASK                        0x00000001
> +#define VIVS_DE_SRC_EX_CONFIG_MULTI_TILED__SHIFT               0
> +#define VIVS_DE_SRC_EX_CONFIG_MULTI_TILED_DISABLE              0x00000000
> +#define VIVS_DE_SRC_EX_CONFIG_MULTI_TILED_ENABLE               0x00000001
> +#define VIVS_DE_SRC_EX_CONFIG_SUPER_TILED__MASK                        0x00000008
> +#define VIVS_DE_SRC_EX_CONFIG_SUPER_TILED__SHIFT               3
> +#define VIVS_DE_SRC_EX_CONFIG_SUPER_TILED_DISABLE              0x00000000
> +#define VIVS_DE_SRC_EX_CONFIG_SUPER_TILED_ENABLE               0x00000008
> +#define VIVS_DE_SRC_EX_CONFIG_MINOR_TILED__MASK                        0x00000100
> +#define VIVS_DE_SRC_EX_CONFIG_MINOR_TILED__SHIFT               8
> +#define VIVS_DE_SRC_EX_CONFIG_MINOR_TILED_DISABLE              0x00000000
> +#define VIVS_DE_SRC_EX_CONFIG_MINOR_TILED_ENABLE               0x00000100
> +
> +#define VIVS_DE_SRC_EX_ADDRESS                                 0x00001304
> +
> +#define VIVS_DE_DE_MULTI_SOURCE                                        0x00001308
> +#define VIVS_DE_DE_MULTI_SOURCE_MAX_SOURCE__MASK               0x00000007
> +#define VIVS_DE_DE_MULTI_SOURCE_MAX_SOURCE__SHIFT              0
> +#define VIVS_DE_DE_MULTI_SOURCE_MAX_SOURCE(x)                  (((x) << VIVS_DE_DE_MULTI_SOURCE_MAX_SOURCE__SHIFT) & VIVS_DE_DE_MULTI_SOURCE_MAX_SOURCE__MASK)
> +#define VIVS_DE_DE_MULTI_SOURCE_HORIZONTAL_BLOCK__MASK         0x00000700
> +#define VIVS_DE_DE_MULTI_SOURCE_HORIZONTAL_BLOCK__SHIFT                8
> +#define VIVS_DE_DE_MULTI_SOURCE_HORIZONTAL_BLOCK_PIXEL16       0x00000000
> +#define VIVS_DE_DE_MULTI_SOURCE_HORIZONTAL_BLOCK_PIXEL32       0x00000100
> +#define VIVS_DE_DE_MULTI_SOURCE_HORIZONTAL_BLOCK_PIXEL64       0x00000200
> +#define VIVS_DE_DE_MULTI_SOURCE_HORIZONTAL_BLOCK_PIXEL128      0x00000300
> +#define VIVS_DE_DE_MULTI_SOURCE_HORIZONTAL_BLOCK_PIXEL256      0x00000400
> +#define VIVS_DE_DE_MULTI_SOURCE_HORIZONTAL_BLOCK_PIXEL512      0x00000500
> +#define VIVS_DE_DE_MULTI_SOURCE_VERTICAL_BLOCK__MASK           0x00070000
> +#define VIVS_DE_DE_MULTI_SOURCE_VERTICAL_BLOCK__SHIFT          16
> +#define VIVS_DE_DE_MULTI_SOURCE_VERTICAL_BLOCK_LINE1           0x00000000
> +#define VIVS_DE_DE_MULTI_SOURCE_VERTICAL_BLOCK_LINE2           0x00010000
> +#define VIVS_DE_DE_MULTI_SOURCE_VERTICAL_BLOCK_LINE4           0x00020000
> +#define VIVS_DE_DE_MULTI_SOURCE_VERTICAL_BLOCK_LINE8           0x00030000
> +#define VIVS_DE_DE_MULTI_SOURCE_VERTICAL_BLOCK_LINE16          0x00040000
> +#define VIVS_DE_DE_MULTI_SOURCE_VERTICAL_BLOCK_LINE32          0x00050000
> +#define VIVS_DE_DE_MULTI_SOURCE_VERTICAL_BLOCK_LINE64          0x00060000
> +#define VIVS_DE_DE_MULTI_SOURCE_VERTICAL_BLOCK_LINE128         0x00070000
> +
> +#define VIVS_DE_DEYUV_CONVERSION                               0x0000130c
> +#define VIVS_DE_DEYUV_CONVERSION_ENABLE__MASK                  0x00000003
> +#define VIVS_DE_DEYUV_CONVERSION_ENABLE__SHIFT                 0
> +#define VIVS_DE_DEYUV_CONVERSION_ENABLE_OFF                    0x00000000
> +#define VIVS_DE_DEYUV_CONVERSION_ENABLE_PLANE1                 0x00000001
> +#define VIVS_DE_DEYUV_CONVERSION_ENABLE_PLANE2                 0x00000002
> +#define VIVS_DE_DEYUV_CONVERSION_ENABLE_PLANE3                 0x00000003
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_COUNT__MASK            0x0000000c
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_COUNT__SHIFT           2
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_COUNT(x)               (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE1_COUNT__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE1_COUNT__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_COUNT__MASK            0x00000030
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_COUNT__SHIFT           4
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_COUNT(x)               (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE2_COUNT__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE2_COUNT__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_COUNT__MASK            0x000000c0
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_COUNT__SHIFT           6
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_COUNT(x)               (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE3_COUNT__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE3_COUNT__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_B__MASK                0x00000300
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_B__SHIFT       8
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_B(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_B__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_B__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_G__MASK                0x00000c00
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_G__SHIFT       10
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_G(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_G__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_G__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_R__MASK                0x00003000
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_R__SHIFT       12
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_R(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_R__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_R__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_A__MASK                0x0000c000
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_A__SHIFT       14
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_A(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_A__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE1_SWIZZLE_A__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_B__MASK                0x00030000
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_B__SHIFT       16
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_B(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_B__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_B__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_G__MASK                0x000c0000
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_G__SHIFT       18
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_G(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_G__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_G__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_R__MASK                0x00300000
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_R__SHIFT       20
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_R(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_R__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_R__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_A__MASK                0x00c00000
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_A__SHIFT       22
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_A(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_A__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE2_SWIZZLE_A__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_B__MASK                0x03000000
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_B__SHIFT       24
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_B(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_B__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_B__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_G__MASK                0x0c000000
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_G__SHIFT       26
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_G(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_G__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_G__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_R__MASK                0x30000000
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_R__SHIFT       28
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_R(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_R__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_R__MASK)
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_A__MASK                0xc0000000
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_A__SHIFT       30
> +#define VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_A(x)           (((x) << VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_A__SHIFT) & VIVS_DE_DEYUV_CONVERSION_PLANE3_SWIZZLE_A__MASK)
> +
> +#define VIVS_DE_DE_PLANE2_ADDRESS                              0x00001310
> +
> +#define VIVS_DE_DE_PLANE2_STRIDE                               0x00001314
> +#define VIVS_DE_DE_PLANE2_STRIDE_STRIDE__MASK                  0x0003ffff
> +#define VIVS_DE_DE_PLANE2_STRIDE_STRIDE__SHIFT                 0
> +#define VIVS_DE_DE_PLANE2_STRIDE_STRIDE(x)                     (((x) << VIVS_DE_DE_PLANE2_STRIDE_STRIDE__SHIFT) & VIVS_DE_DE_PLANE2_STRIDE_STRIDE__MASK)
> +
> +#define VIVS_DE_DE_PLANE3_ADDRESS                              0x00001318
> +
> +#define VIVS_DE_DE_PLANE3_STRIDE                               0x0000131c
> +#define VIVS_DE_DE_PLANE3_STRIDE_STRIDE__MASK                  0x0003ffff
> +#define VIVS_DE_DE_PLANE3_STRIDE_STRIDE__SHIFT                 0
> +#define VIVS_DE_DE_PLANE3_STRIDE_STRIDE(x)                     (((x) << VIVS_DE_DE_PLANE3_STRIDE_STRIDE__SHIFT) & VIVS_DE_DE_PLANE3_STRIDE_STRIDE__MASK)
> +
> +#define VIVS_DE_DE_STALL_DE                                    0x00001320
> +#define VIVS_DE_DE_STALL_DE_ENABLE__MASK                       0x00000001
> +#define VIVS_DE_DE_STALL_DE_ENABLE__SHIFT                      0
> +#define VIVS_DE_DE_STALL_DE_ENABLE_DISABLE                     0x00000000
> +#define VIVS_DE_DE_STALL_DE_ENABLE_ENABLE                      0x00000001
> +
> +#define VIVS_DE_FILTER_KERNEL(i0)                             (0x00001800 + 0x4*(i0))
> +#define VIVS_DE_FILTER_KERNEL__ESIZE                           0x00000004
> +#define VIVS_DE_FILTER_KERNEL__LEN                             0x00000080
> +#define VIVS_DE_FILTER_KERNEL_COEFFICIENT0__MASK               0x0000ffff
> +#define VIVS_DE_FILTER_KERNEL_COEFFICIENT0__SHIFT              0
> +#define VIVS_DE_FILTER_KERNEL_COEFFICIENT0(x)                  (((x) << VIVS_DE_FILTER_KERNEL_COEFFICIENT0__SHIFT) & VIVS_DE_FILTER_KERNEL_COEFFICIENT0__MASK)
> +#define VIVS_DE_FILTER_KERNEL_COEFFICIENT1__MASK               0xffff0000
> +#define VIVS_DE_FILTER_KERNEL_COEFFICIENT1__SHIFT              16
> +#define VIVS_DE_FILTER_KERNEL_COEFFICIENT1(x)                  (((x) << VIVS_DE_FILTER_KERNEL_COEFFICIENT1__SHIFT) & VIVS_DE_FILTER_KERNEL_COEFFICIENT1__MASK)
> +
> +#define VIVS_DE_INDEX_COLOR_TABLE(i0)                         (0x00001c00 + 0x4*(i0))
> +#define VIVS_DE_INDEX_COLOR_TABLE__ESIZE                       0x00000004
> +#define VIVS_DE_INDEX_COLOR_TABLE__LEN                         0x00000100
> +
> +#define VIVS_DE_HORI_FILTER_KERNEL(i0)                        (0x00002800 + 0x4*(i0))
> +#define VIVS_DE_HORI_FILTER_KERNEL__ESIZE                      0x00000004
> +#define VIVS_DE_HORI_FILTER_KERNEL__LEN                                0x00000080
> +#define VIVS_DE_HORI_FILTER_KERNEL_COEFFICIENT0__MASK          0x0000ffff
> +#define VIVS_DE_HORI_FILTER_KERNEL_COEFFICIENT0__SHIFT         0
> +#define VIVS_DE_HORI_FILTER_KERNEL_COEFFICIENT0(x)             (((x) << VIVS_DE_HORI_FILTER_KERNEL_COEFFICIENT0__SHIFT) & VIVS_DE_HORI_FILTER_KERNEL_COEFFICIENT0__MASK)
> +#define VIVS_DE_HORI_FILTER_KERNEL_COEFFICIENT1__MASK          0xffff0000
> +#define VIVS_DE_HORI_FILTER_KERNEL_COEFFICIENT1__SHIFT         16
> +#define VIVS_DE_HORI_FILTER_KERNEL_COEFFICIENT1(x)             (((x) << VIVS_DE_HORI_FILTER_KERNEL_COEFFICIENT1__SHIFT) & VIVS_DE_HORI_FILTER_KERNEL_COEFFICIENT1__MASK)
> +
> +#define VIVS_DE_VERTI_FILTER_KERNEL(i0)                               (0x00002a00 + 0x4*(i0))
> +#define VIVS_DE_VERTI_FILTER_KERNEL__ESIZE                     0x00000004
> +#define VIVS_DE_VERTI_FILTER_KERNEL__LEN                       0x00000080
> +#define VIVS_DE_VERTI_FILTER_KERNEL_COEFFICIENT0__MASK         0x0000ffff
> +#define VIVS_DE_VERTI_FILTER_KERNEL_COEFFICIENT0__SHIFT                0
> +#define VIVS_DE_VERTI_FILTER_KERNEL_COEFFICIENT0(x)            (((x) << VIVS_DE_VERTI_FILTER_KERNEL_COEFFICIENT0__SHIFT) & VIVS_DE_VERTI_FILTER_KERNEL_COEFFICIENT0__MASK)
> +#define VIVS_DE_VERTI_FILTER_KERNEL_COEFFICIENT1__MASK         0xffff0000
> +#define VIVS_DE_VERTI_FILTER_KERNEL_COEFFICIENT1__SHIFT                16
> +#define VIVS_DE_VERTI_FILTER_KERNEL_COEFFICIENT1(x)            (((x) << VIVS_DE_VERTI_FILTER_KERNEL_COEFFICIENT1__SHIFT) & VIVS_DE_VERTI_FILTER_KERNEL_COEFFICIENT1__MASK)
> +
> +#define VIVS_DE_INDEX_COLOR_TABLE32(i0)                               (0x00003400 + 0x4*(i0))
> +#define VIVS_DE_INDEX_COLOR_TABLE32__ESIZE                     0x00000004
> +#define VIVS_DE_INDEX_COLOR_TABLE32__LEN                       0x00000100
> +
> +#define VIVS_DE_BLOCK4                                         0x00000000
> +
> +#define VIVS_DE_BLOCK4_SRC_ADDRESS(i0)                        (0x00012800 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_ADDRESS__ESIZE                      0x00000004
> +#define VIVS_DE_BLOCK4_SRC_ADDRESS__LEN                                0x00000004
> +
> +#define VIVS_DE_BLOCK4_SRC_STRIDE(i0)                         (0x00012810 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_STRIDE__ESIZE                       0x00000004
> +#define VIVS_DE_BLOCK4_SRC_STRIDE__LEN                         0x00000004
> +#define VIVS_DE_BLOCK4_SRC_STRIDE_STRIDE__MASK                 0x0003ffff
> +#define VIVS_DE_BLOCK4_SRC_STRIDE_STRIDE__SHIFT                        0
> +#define VIVS_DE_BLOCK4_SRC_STRIDE_STRIDE(x)                    (((x) << VIVS_DE_BLOCK4_SRC_STRIDE_STRIDE__SHIFT) & VIVS_DE_BLOCK4_SRC_STRIDE_STRIDE__MASK)
> +
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG(i0)                (0x00012820 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG__ESIZE              0x00000004
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG__LEN                        0x00000004
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG_WIDTH__MASK         0x0000ffff
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG_WIDTH__SHIFT                0
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG_WIDTH(x)            (((x) << VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG_WIDTH__SHIFT) & VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG_WIDTH__MASK)
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG_ROTATION__MASK      0x00010000
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG_ROTATION__SHIFT     16
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG_ROTATION_DISABLE    0x00000000
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_CONFIG_ROTATION_ENABLE     0x00010000
> +
> +#define VIVS_DE_BLOCK4_SRC_CONFIG(i0)                         (0x00012830 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_CONFIG__ESIZE                       0x00000004
> +#define VIVS_DE_BLOCK4_SRC_CONFIG__LEN                         0x00000004
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_PE10_SOURCE_FORMAT__MASK     0x0000000f
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_PE10_SOURCE_FORMAT__SHIFT    0
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_PE10_SOURCE_FORMAT(x)                (((x) << VIVS_DE_BLOCK4_SRC_CONFIG_PE10_SOURCE_FORMAT__SHIFT) & VIVS_DE_BLOCK4_SRC_CONFIG_PE10_SOURCE_FORMAT__MASK)
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_TRANSPARENCY__MASK           0x00000030
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_TRANSPARENCY__SHIFT          4
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_TRANSPARENCY(x)              (((x) << VIVS_DE_BLOCK4_SRC_CONFIG_TRANSPARENCY__SHIFT) & VIVS_DE_BLOCK4_SRC_CONFIG_TRANSPARENCY__MASK)
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_SRC_RELATIVE__MASK           0x00000040
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_SRC_RELATIVE__SHIFT          6
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_SRC_RELATIVE_ABSOLUTE                0x00000000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_SRC_RELATIVE_RELATIVE                0x00000040
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_TILED__MASK                  0x00000080
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_TILED__SHIFT                 7
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_TILED_DISABLE                        0x00000000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_TILED_ENABLE                 0x00000080
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_LOCATION__MASK               0x00000100
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_LOCATION__SHIFT              8
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_LOCATION_MEMORY              0x00000000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_LOCATION_STREAM              0x00000100
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_PACK__MASK                   0x00003000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_PACK__SHIFT                  12
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_PACK_PACKED8                 0x00000000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_PACK_PACKED16                        0x00001000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_PACK_PACKED32                        0x00002000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_PACK_UNPACKED                        0x00003000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_MONO_TRANSPARENCY__MASK      0x00008000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_MONO_TRANSPARENCY__SHIFT     15
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_MONO_TRANSPARENCY_BACKGROUND 0x00000000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_MONO_TRANSPARENCY_FOREGROUND 0x00008000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_UNK16                                0x00010000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_SWIZZLE__MASK                        0x00300000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_SWIZZLE__SHIFT               20
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_SWIZZLE(x)                   (((x) << VIVS_DE_BLOCK4_SRC_CONFIG_SWIZZLE__SHIFT) & VIVS_DE_BLOCK4_SRC_CONFIG_SWIZZLE__MASK)
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_SOURCE_FORMAT__MASK          0x1f000000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_SOURCE_FORMAT__SHIFT         24
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_SOURCE_FORMAT(x)             (((x) << VIVS_DE_BLOCK4_SRC_CONFIG_SOURCE_FORMAT__SHIFT) & VIVS_DE_BLOCK4_SRC_CONFIG_SOURCE_FORMAT__MASK)
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_DISABLE420_L2_CACHE          0x20000000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_ENDIAN_CONTROL__MASK         0xc0000000
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_ENDIAN_CONTROL__SHIFT                30
> +#define VIVS_DE_BLOCK4_SRC_CONFIG_ENDIAN_CONTROL(x)            (((x) << VIVS_DE_BLOCK4_SRC_CONFIG_ENDIAN_CONTROL__SHIFT) & VIVS_DE_BLOCK4_SRC_CONFIG_ENDIAN_CONTROL__MASK)
> +
> +#define VIVS_DE_BLOCK4_SRC_ORIGIN(i0)                         (0x00012840 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_ORIGIN__ESIZE                       0x00000004
> +#define VIVS_DE_BLOCK4_SRC_ORIGIN__LEN                         0x00000004
> +#define VIVS_DE_BLOCK4_SRC_ORIGIN_X__MASK                      0x0000ffff
> +#define VIVS_DE_BLOCK4_SRC_ORIGIN_X__SHIFT                     0
> +#define VIVS_DE_BLOCK4_SRC_ORIGIN_X(x)                         (((x) << VIVS_DE_BLOCK4_SRC_ORIGIN_X__SHIFT) & VIVS_DE_BLOCK4_SRC_ORIGIN_X__MASK)
> +#define VIVS_DE_BLOCK4_SRC_ORIGIN_Y__MASK                      0xffff0000
> +#define VIVS_DE_BLOCK4_SRC_ORIGIN_Y__SHIFT                     16
> +#define VIVS_DE_BLOCK4_SRC_ORIGIN_Y(x)                         (((x) << VIVS_DE_BLOCK4_SRC_ORIGIN_Y__SHIFT) & VIVS_DE_BLOCK4_SRC_ORIGIN_Y__MASK)
> +
> +#define VIVS_DE_BLOCK4_SRC_SIZE(i0)                           (0x00012850 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_SIZE__ESIZE                         0x00000004
> +#define VIVS_DE_BLOCK4_SRC_SIZE__LEN                           0x00000004
> +#define VIVS_DE_BLOCK4_SRC_SIZE_X__MASK                                0x0000ffff
> +#define VIVS_DE_BLOCK4_SRC_SIZE_X__SHIFT                       0
> +#define VIVS_DE_BLOCK4_SRC_SIZE_X(x)                           (((x) << VIVS_DE_BLOCK4_SRC_SIZE_X__SHIFT) & VIVS_DE_BLOCK4_SRC_SIZE_X__MASK)
> +#define VIVS_DE_BLOCK4_SRC_SIZE_Y__MASK                                0xffff0000
> +#define VIVS_DE_BLOCK4_SRC_SIZE_Y__SHIFT                       16
> +#define VIVS_DE_BLOCK4_SRC_SIZE_Y(x)                           (((x) << VIVS_DE_BLOCK4_SRC_SIZE_Y__SHIFT) & VIVS_DE_BLOCK4_SRC_SIZE_Y__MASK)
> +
> +#define VIVS_DE_BLOCK4_SRC_COLOR_BG(i0)                               (0x00012860 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_COLOR_BG__ESIZE                     0x00000004
> +#define VIVS_DE_BLOCK4_SRC_COLOR_BG__LEN                       0x00000004
> +
> +#define VIVS_DE_BLOCK4_ROP(i0)                                (0x00012870 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_ROP__ESIZE                              0x00000004
> +#define VIVS_DE_BLOCK4_ROP__LEN                                        0x00000004
> +#define VIVS_DE_BLOCK4_ROP_ROP_FG__MASK                                0x000000ff
> +#define VIVS_DE_BLOCK4_ROP_ROP_FG__SHIFT                       0
> +#define VIVS_DE_BLOCK4_ROP_ROP_FG(x)                           (((x) << VIVS_DE_BLOCK4_ROP_ROP_FG__SHIFT) & VIVS_DE_BLOCK4_ROP_ROP_FG__MASK)
> +#define VIVS_DE_BLOCK4_ROP_ROP_BG__MASK                                0x0000ff00
> +#define VIVS_DE_BLOCK4_ROP_ROP_BG__SHIFT                       8
> +#define VIVS_DE_BLOCK4_ROP_ROP_BG(x)                           (((x) << VIVS_DE_BLOCK4_ROP_ROP_BG__SHIFT) & VIVS_DE_BLOCK4_ROP_ROP_BG__MASK)
> +#define VIVS_DE_BLOCK4_ROP_TYPE__MASK                          0x00300000
> +#define VIVS_DE_BLOCK4_ROP_TYPE__SHIFT                         20
> +#define VIVS_DE_BLOCK4_ROP_TYPE_ROP2_PATTERN                   0x00000000
> +#define VIVS_DE_BLOCK4_ROP_TYPE_ROP2_SOURCE                    0x00100000
> +#define VIVS_DE_BLOCK4_ROP_TYPE_ROP3                           0x00200000
> +#define VIVS_DE_BLOCK4_ROP_TYPE_ROP4                           0x00300000
> +
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL(i0)                      (0x00012880 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL__ESIZE                    0x00000004
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL__LEN                      0x00000004
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL_ENABLE__MASK              0x00000001
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL_ENABLE__SHIFT             0
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL_ENABLE_OFF                        0x00000000
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL_ENABLE_ON                 0x00000001
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__MASK       0x00ff0000
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__SHIFT      16
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA(x)  (((x) << VIVS_DE_BLOCK4_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__SHIFT) & VIVS_DE_BLOCK4_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__MASK)
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__MASK       0xff000000
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__SHIFT      24
> +#define VIVS_DE_BLOCK4_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA(x)  (((x) << VIVS_DE_BLOCK4_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__SHIFT) & VIVS_DE_BLOCK4_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__MASK)
> +
> +#define VIVS_DE_BLOCK4_ALPHA_MODES(i0)                        (0x00012890 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_ALPHA_MODES__ESIZE                      0x00000004
> +#define VIVS_DE_BLOCK4_ALPHA_MODES__LEN                                0x00000004
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_ALPHA_MODE__MASK                0x00000001
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_ALPHA_MODE__SHIFT       0
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_ALPHA_MODE_NORMAL       0x00000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_ALPHA_MODE_INVERSED     0x00000001
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_ALPHA_MODE__MASK                0x00000010
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_ALPHA_MODE__SHIFT       4
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_ALPHA_MODE_NORMAL       0x00000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_ALPHA_MODE_INVERSED     0x00000010
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE__MASK 0x00000300
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE__SHIFT        8
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE_NORMAL        0x00000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE_GLOBAL        0x00000100
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE_SCALED        0x00000200
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE__MASK 0x00003000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE__SHIFT        12
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE_NORMAL        0x00000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE_GLOBAL        0x00001000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE_SCALED        0x00002000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY__MASK       0x00010000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY__SHIFT      16
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY_DISABLE     0x00000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY_ENABLE      0x00010000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY__MASK       0x00100000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY__SHIFT      20
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY_DISABLE     0x00000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY_ENABLE      0x00100000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_BLENDING_MODE__MASK     0x07000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_BLENDING_MODE__SHIFT    24
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_BLENDING_MODE(x)                (((x) << VIVS_DE_BLOCK4_ALPHA_MODES_SRC_BLENDING_MODE__SHIFT) & VIVS_DE_BLOCK4_ALPHA_MODES_SRC_BLENDING_MODE__MASK)
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_ALPHA_FACTOR__MASK      0x08000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_ALPHA_FACTOR__SHIFT     27
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_ALPHA_FACTOR_DISABLE    0x00000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_SRC_ALPHA_FACTOR_ENABLE     0x08000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_BLENDING_MODE__MASK     0x70000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_BLENDING_MODE__SHIFT    28
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_BLENDING_MODE(x)                (((x) << VIVS_DE_BLOCK4_ALPHA_MODES_DST_BLENDING_MODE__SHIFT) & VIVS_DE_BLOCK4_ALPHA_MODES_DST_BLENDING_MODE__MASK)
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_ALPHA_FACTOR__MASK      0x80000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_ALPHA_FACTOR__SHIFT     31
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_ALPHA_FACTOR_DISABLE    0x00000000
> +#define VIVS_DE_BLOCK4_ALPHA_MODES_DST_ALPHA_FACTOR_ENABLE     0x80000000
> +
> +#define VIVS_DE_BLOCK4_ADDRESS_U(i0)                          (0x000128a0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_ADDRESS_U__ESIZE                                0x00000004
> +#define VIVS_DE_BLOCK4_ADDRESS_U__LEN                          0x00000004
> +
> +#define VIVS_DE_BLOCK4_STRIDE_U(i0)                           (0x000128b0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_STRIDE_U__ESIZE                         0x00000004
> +#define VIVS_DE_BLOCK4_STRIDE_U__LEN                           0x00000004
> +#define VIVS_DE_BLOCK4_STRIDE_U_STRIDE__MASK                   0x0003ffff
> +#define VIVS_DE_BLOCK4_STRIDE_U_STRIDE__SHIFT                  0
> +#define VIVS_DE_BLOCK4_STRIDE_U_STRIDE(x)                      (((x) << VIVS_DE_BLOCK4_STRIDE_U_STRIDE__SHIFT) & VIVS_DE_BLOCK4_STRIDE_U_STRIDE__MASK)
> +
> +#define VIVS_DE_BLOCK4_ADDRESS_V(i0)                          (0x000128c0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_ADDRESS_V__ESIZE                                0x00000004
> +#define VIVS_DE_BLOCK4_ADDRESS_V__LEN                          0x00000004
> +
> +#define VIVS_DE_BLOCK4_STRIDE_V(i0)                           (0x000128d0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_STRIDE_V__ESIZE                         0x00000004
> +#define VIVS_DE_BLOCK4_STRIDE_V__LEN                           0x00000004
> +#define VIVS_DE_BLOCK4_STRIDE_V_STRIDE__MASK                   0x0003ffff
> +#define VIVS_DE_BLOCK4_STRIDE_V_STRIDE__SHIFT                  0
> +#define VIVS_DE_BLOCK4_STRIDE_V_STRIDE(x)                      (((x) << VIVS_DE_BLOCK4_STRIDE_V_STRIDE__SHIFT) & VIVS_DE_BLOCK4_STRIDE_V_STRIDE__MASK)
> +
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_HEIGHT(i0)                (0x000128e0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_HEIGHT__ESIZE              0x00000004
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_HEIGHT__LEN                        0x00000004
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_HEIGHT_HEIGHT__MASK                0x0000ffff
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_HEIGHT_HEIGHT__SHIFT       0
> +#define VIVS_DE_BLOCK4_SRC_ROTATION_HEIGHT_HEIGHT(x)           (((x) << VIVS_DE_BLOCK4_SRC_ROTATION_HEIGHT_HEIGHT__SHIFT) & VIVS_DE_BLOCK4_SRC_ROTATION_HEIGHT_HEIGHT__MASK)
> +
> +#define VIVS_DE_BLOCK4_ROT_ANGLE(i0)                          (0x000128f0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_ROT_ANGLE__ESIZE                                0x00000004
> +#define VIVS_DE_BLOCK4_ROT_ANGLE__LEN                          0x00000004
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_SRC__MASK                     0x00000007
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_SRC__SHIFT                    0
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_SRC(x)                                (((x) << VIVS_DE_BLOCK4_ROT_ANGLE_SRC__SHIFT) & VIVS_DE_BLOCK4_ROT_ANGLE_SRC__MASK)
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_DST__MASK                     0x00000038
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_DST__SHIFT                    3
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_DST(x)                                (((x) << VIVS_DE_BLOCK4_ROT_ANGLE_DST__SHIFT) & VIVS_DE_BLOCK4_ROT_ANGLE_DST__MASK)
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_SRC_MASK                      0x00000100
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_DST_MASK                      0x00000200
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_SRC_MIRROR__MASK              0x00003000
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_SRC_MIRROR__SHIFT             12
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_SRC_MIRROR(x)                 (((x) << VIVS_DE_BLOCK4_ROT_ANGLE_SRC_MIRROR__SHIFT) & VIVS_DE_BLOCK4_ROT_ANGLE_SRC_MIRROR__MASK)
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_SRC_MIRROR_MASK               0x00008000
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_DST_MIRROR__MASK              0x00030000
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_DST_MIRROR__SHIFT             16
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_DST_MIRROR(x)                 (((x) << VIVS_DE_BLOCK4_ROT_ANGLE_DST_MIRROR__SHIFT) & VIVS_DE_BLOCK4_ROT_ANGLE_DST_MIRROR__MASK)
> +#define VIVS_DE_BLOCK4_ROT_ANGLE_DST_MIRROR_MASK               0x00080000
> +
> +#define VIVS_DE_BLOCK4_GLOBAL_SRC_COLOR(i0)                   (0x00012900 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_GLOBAL_SRC_COLOR__ESIZE                 0x00000004
> +#define VIVS_DE_BLOCK4_GLOBAL_SRC_COLOR__LEN                   0x00000004
> +
> +#define VIVS_DE_BLOCK4_GLOBAL_DEST_COLOR(i0)                  (0x00012910 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_GLOBAL_DEST_COLOR__ESIZE                        0x00000004
> +#define VIVS_DE_BLOCK4_GLOBAL_DEST_COLOR__LEN                  0x00000004
> +
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES(i0)                       (0x00012920 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES__ESIZE             0x00000004
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES__LEN               0x00000004
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY__MASK      0x00000001
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY__SHIFT     0
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY_DISABLE    0x00000000
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY_ENABLE     0x00000001
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY__MASK      0x00000010
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY__SHIFT     4
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY_DISABLE    0x00000000
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY_ENABLE     0x00000010
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY__MASK       0x00000300
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY__SHIFT      8
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY_DISABLE     0x00000000
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY_ALPHA       0x00000100
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY_COLOR       0x00000200
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY__MASK       0x00100000
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY__SHIFT      20
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY_DISABLE     0x00000000
> +#define VIVS_DE_BLOCK4_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY_ENABLE      0x00100000
> +
> +#define VIVS_DE_BLOCK4_TRANSPARENCY(i0)                               (0x00012930 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_TRANSPARENCY__ESIZE                     0x00000004
> +#define VIVS_DE_BLOCK4_TRANSPARENCY__LEN                       0x00000004
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_SOURCE__MASK               0x00000003
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_SOURCE__SHIFT              0
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_SOURCE_OPAQUE              0x00000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_SOURCE_MASK                        0x00000001
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_SOURCE_KEY                 0x00000002
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_PATTERN__MASK              0x00000030
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_PATTERN__SHIFT             4
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_PATTERN_OPAQUE             0x00000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_PATTERN_MASK               0x00000010
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_PATTERN_KEY                        0x00000020
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_DESTINATION__MASK          0x00000300
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_DESTINATION__SHIFT         8
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_DESTINATION_OPAQUE         0x00000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_DESTINATION_MASK           0x00000100
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_DESTINATION_KEY            0x00000200
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_TRANSPARENCY_MASK          0x00001000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_SRC_OVERRIDE__MASK     0x00030000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_SRC_OVERRIDE__SHIFT    16
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_SRC_OVERRIDE_DEFAULT   0x00000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_SRC_OVERRIDE_USE_ENABLE        0x00010000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_SRC_OVERRIDE_USE_DISABLE       0x00020000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_PAT_OVERRIDE__MASK     0x00300000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_PAT_OVERRIDE__SHIFT    20
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_PAT_OVERRIDE_DEFAULT   0x00000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_PAT_OVERRIDE_USE_ENABLE        0x00100000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_PAT_OVERRIDE_USE_DISABLE       0x00200000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_DST_OVERRIDE__MASK     0x03000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_DST_OVERRIDE__SHIFT    24
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_DST_OVERRIDE_DEFAULT   0x00000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_DST_OVERRIDE_USE_ENABLE        0x01000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_USE_DST_OVERRIDE_USE_DISABLE       0x02000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_RESOURCE_OVERRIDE_MASK     0x10000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_DFB_COLOR_KEY__MASK                0x20000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_DFB_COLOR_KEY__SHIFT       29
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_DFB_COLOR_KEY_DISABLE      0x00000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_DFB_COLOR_KEY_ENABLE       0x20000000
> +#define VIVS_DE_BLOCK4_TRANSPARENCY_DFB_COLOR_KEY_MASK         0x80000000
> +
> +#define VIVS_DE_BLOCK4_CONTROL(i0)                            (0x00012940 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_CONTROL__ESIZE                          0x00000004
> +#define VIVS_DE_BLOCK4_CONTROL__LEN                            0x00000004
> +#define VIVS_DE_BLOCK4_CONTROL_YUV__MASK                       0x00000001
> +#define VIVS_DE_BLOCK4_CONTROL_YUV__SHIFT                      0
> +#define VIVS_DE_BLOCK4_CONTROL_YUV_601                         0x00000000
> +#define VIVS_DE_BLOCK4_CONTROL_YUV_709                         0x00000001
> +#define VIVS_DE_BLOCK4_CONTROL_YUV_MASK                                0x00000008
> +#define VIVS_DE_BLOCK4_CONTROL_UV_SWIZZLE__MASK                        0x00000010
> +#define VIVS_DE_BLOCK4_CONTROL_UV_SWIZZLE__SHIFT               4
> +#define VIVS_DE_BLOCK4_CONTROL_UV_SWIZZLE_UV                   0x00000000
> +#define VIVS_DE_BLOCK4_CONTROL_UV_SWIZZLE_VU                   0x00000010
> +#define VIVS_DE_BLOCK4_CONTROL_UV_SWIZZLE_MASK                 0x00000080
> +#define VIVS_DE_BLOCK4_CONTROL_YUVRGB__MASK                    0x00000100
> +#define VIVS_DE_BLOCK4_CONTROL_YUVRGB__SHIFT                   8
> +#define VIVS_DE_BLOCK4_CONTROL_YUVRGB_DISABLE                  0x00000000
> +#define VIVS_DE_BLOCK4_CONTROL_YUVRGB_ENABLE                   0x00000100
> +#define VIVS_DE_BLOCK4_CONTROL_YUVRGB_MASK                     0x00000800
> +
> +#define VIVS_DE_BLOCK4_SRC_COLOR_KEY_HIGH(i0)                 (0x00012950 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_COLOR_KEY_HIGH__ESIZE               0x00000004
> +#define VIVS_DE_BLOCK4_SRC_COLOR_KEY_HIGH__LEN                 0x00000004
> +
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG(i0)                      (0x00012960 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG__ESIZE                    0x00000004
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG__LEN                      0x00000004
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_MULTI_TILED__MASK         0x00000001
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_MULTI_TILED__SHIFT                0
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_MULTI_TILED_DISABLE       0x00000000
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_MULTI_TILED_ENABLE                0x00000001
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_SUPER_TILED__MASK         0x00000008
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_SUPER_TILED__SHIFT                3
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_SUPER_TILED_DISABLE       0x00000000
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_SUPER_TILED_ENABLE                0x00000008
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_MINOR_TILED__MASK         0x00000100
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_MINOR_TILED__SHIFT                8
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_MINOR_TILED_DISABLE       0x00000000
> +#define VIVS_DE_BLOCK4_SRC_EX_CONFIG_MINOR_TILED_ENABLE                0x00000100
> +
> +#define VIVS_DE_BLOCK4_SRC_EX_ADDRESS(i0)                     (0x00012970 + 0x4*(i0))
> +#define VIVS_DE_BLOCK4_SRC_EX_ADDRESS__ESIZE                   0x00000004
> +#define VIVS_DE_BLOCK4_SRC_EX_ADDRESS__LEN                     0x00000004
> +
> +#define VIVS_DE_BLOCK8                                         0x00000000
> +
> +#define VIVS_DE_BLOCK8_SRC_ADDRESS(i0)                        (0x00012a00 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_ADDRESS__ESIZE                      0x00000004
> +#define VIVS_DE_BLOCK8_SRC_ADDRESS__LEN                                0x00000008
> +
> +#define VIVS_DE_BLOCK8_SRC_STRIDE(i0)                         (0x00012a20 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_STRIDE__ESIZE                       0x00000004
> +#define VIVS_DE_BLOCK8_SRC_STRIDE__LEN                         0x00000008
> +#define VIVS_DE_BLOCK8_SRC_STRIDE_STRIDE__MASK                 0x0003ffff
> +#define VIVS_DE_BLOCK8_SRC_STRIDE_STRIDE__SHIFT                        0
> +#define VIVS_DE_BLOCK8_SRC_STRIDE_STRIDE(x)                    (((x) << VIVS_DE_BLOCK8_SRC_STRIDE_STRIDE__SHIFT) & VIVS_DE_BLOCK8_SRC_STRIDE_STRIDE__MASK)
> +
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG(i0)                (0x00012a40 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG__ESIZE              0x00000004
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG__LEN                        0x00000008
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG_WIDTH__MASK         0x0000ffff
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG_WIDTH__SHIFT                0
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG_WIDTH(x)            (((x) << VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG_WIDTH__SHIFT) & VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG_WIDTH__MASK)
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG_ROTATION__MASK      0x00010000
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG_ROTATION__SHIFT     16
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG_ROTATION_DISABLE    0x00000000
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_CONFIG_ROTATION_ENABLE     0x00010000
> +
> +#define VIVS_DE_BLOCK8_SRC_CONFIG(i0)                         (0x00012a60 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_CONFIG__ESIZE                       0x00000004
> +#define VIVS_DE_BLOCK8_SRC_CONFIG__LEN                         0x00000008
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_PE10_SOURCE_FORMAT__MASK     0x0000000f
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_PE10_SOURCE_FORMAT__SHIFT    0
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_PE10_SOURCE_FORMAT(x)                (((x) << VIVS_DE_BLOCK8_SRC_CONFIG_PE10_SOURCE_FORMAT__SHIFT) & VIVS_DE_BLOCK8_SRC_CONFIG_PE10_SOURCE_FORMAT__MASK)
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_TRANSPARENCY__MASK           0x00000030
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_TRANSPARENCY__SHIFT          4
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_TRANSPARENCY(x)              (((x) << VIVS_DE_BLOCK8_SRC_CONFIG_TRANSPARENCY__SHIFT) & VIVS_DE_BLOCK8_SRC_CONFIG_TRANSPARENCY__MASK)
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_SRC_RELATIVE__MASK           0x00000040
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_SRC_RELATIVE__SHIFT          6
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_SRC_RELATIVE_ABSOLUTE                0x00000000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_SRC_RELATIVE_RELATIVE                0x00000040
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_TILED__MASK                  0x00000080
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_TILED__SHIFT                 7
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_TILED_DISABLE                        0x00000000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_TILED_ENABLE                 0x00000080
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_LOCATION__MASK               0x00000100
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_LOCATION__SHIFT              8
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_LOCATION_MEMORY              0x00000000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_LOCATION_STREAM              0x00000100
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_PACK__MASK                   0x00003000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_PACK__SHIFT                  12
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_PACK_PACKED8                 0x00000000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_PACK_PACKED16                        0x00001000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_PACK_PACKED32                        0x00002000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_PACK_UNPACKED                        0x00003000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_MONO_TRANSPARENCY__MASK      0x00008000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_MONO_TRANSPARENCY__SHIFT     15
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_MONO_TRANSPARENCY_BACKGROUND 0x00000000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_MONO_TRANSPARENCY_FOREGROUND 0x00008000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_UNK16                                0x00010000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_SWIZZLE__MASK                        0x00300000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_SWIZZLE__SHIFT               20
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_SWIZZLE(x)                   (((x) << VIVS_DE_BLOCK8_SRC_CONFIG_SWIZZLE__SHIFT) & VIVS_DE_BLOCK8_SRC_CONFIG_SWIZZLE__MASK)
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_SOURCE_FORMAT__MASK          0x1f000000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_SOURCE_FORMAT__SHIFT         24
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_SOURCE_FORMAT(x)             (((x) << VIVS_DE_BLOCK8_SRC_CONFIG_SOURCE_FORMAT__SHIFT) & VIVS_DE_BLOCK8_SRC_CONFIG_SOURCE_FORMAT__MASK)
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_DISABLE420_L2_CACHE          0x20000000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_ENDIAN_CONTROL__MASK         0xc0000000
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_ENDIAN_CONTROL__SHIFT                30
> +#define VIVS_DE_BLOCK8_SRC_CONFIG_ENDIAN_CONTROL(x)            (((x) << VIVS_DE_BLOCK8_SRC_CONFIG_ENDIAN_CONTROL__SHIFT) & VIVS_DE_BLOCK8_SRC_CONFIG_ENDIAN_CONTROL__MASK)
> +
> +#define VIVS_DE_BLOCK8_SRC_ORIGIN(i0)                         (0x00012a80 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_ORIGIN__ESIZE                       0x00000004
> +#define VIVS_DE_BLOCK8_SRC_ORIGIN__LEN                         0x00000008
> +#define VIVS_DE_BLOCK8_SRC_ORIGIN_X__MASK                      0x0000ffff
> +#define VIVS_DE_BLOCK8_SRC_ORIGIN_X__SHIFT                     0
> +#define VIVS_DE_BLOCK8_SRC_ORIGIN_X(x)                         (((x) << VIVS_DE_BLOCK8_SRC_ORIGIN_X__SHIFT) & VIVS_DE_BLOCK8_SRC_ORIGIN_X__MASK)
> +#define VIVS_DE_BLOCK8_SRC_ORIGIN_Y__MASK                      0xffff0000
> +#define VIVS_DE_BLOCK8_SRC_ORIGIN_Y__SHIFT                     16
> +#define VIVS_DE_BLOCK8_SRC_ORIGIN_Y(x)                         (((x) << VIVS_DE_BLOCK8_SRC_ORIGIN_Y__SHIFT) & VIVS_DE_BLOCK8_SRC_ORIGIN_Y__MASK)
> +
> +#define VIVS_DE_BLOCK8_SRC_SIZE(i0)                           (0x00012aa0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_SIZE__ESIZE                         0x00000004
> +#define VIVS_DE_BLOCK8_SRC_SIZE__LEN                           0x00000008
> +#define VIVS_DE_BLOCK8_SRC_SIZE_X__MASK                                0x0000ffff
> +#define VIVS_DE_BLOCK8_SRC_SIZE_X__SHIFT                       0
> +#define VIVS_DE_BLOCK8_SRC_SIZE_X(x)                           (((x) << VIVS_DE_BLOCK8_SRC_SIZE_X__SHIFT) & VIVS_DE_BLOCK8_SRC_SIZE_X__MASK)
> +#define VIVS_DE_BLOCK8_SRC_SIZE_Y__MASK                                0xffff0000
> +#define VIVS_DE_BLOCK8_SRC_SIZE_Y__SHIFT                       16
> +#define VIVS_DE_BLOCK8_SRC_SIZE_Y(x)                           (((x) << VIVS_DE_BLOCK8_SRC_SIZE_Y__SHIFT) & VIVS_DE_BLOCK8_SRC_SIZE_Y__MASK)
> +
> +#define VIVS_DE_BLOCK8_SRC_COLOR_BG(i0)                               (0x00012ac0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_COLOR_BG__ESIZE                     0x00000004
> +#define VIVS_DE_BLOCK8_SRC_COLOR_BG__LEN                       0x00000008
> +
> +#define VIVS_DE_BLOCK8_ROP(i0)                                (0x00012ae0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_ROP__ESIZE                              0x00000004
> +#define VIVS_DE_BLOCK8_ROP__LEN                                        0x00000008
> +#define VIVS_DE_BLOCK8_ROP_ROP_FG__MASK                                0x000000ff
> +#define VIVS_DE_BLOCK8_ROP_ROP_FG__SHIFT                       0
> +#define VIVS_DE_BLOCK8_ROP_ROP_FG(x)                           (((x) << VIVS_DE_BLOCK8_ROP_ROP_FG__SHIFT) & VIVS_DE_BLOCK8_ROP_ROP_FG__MASK)
> +#define VIVS_DE_BLOCK8_ROP_ROP_BG__MASK                                0x0000ff00
> +#define VIVS_DE_BLOCK8_ROP_ROP_BG__SHIFT                       8
> +#define VIVS_DE_BLOCK8_ROP_ROP_BG(x)                           (((x) << VIVS_DE_BLOCK8_ROP_ROP_BG__SHIFT) & VIVS_DE_BLOCK8_ROP_ROP_BG__MASK)
> +#define VIVS_DE_BLOCK8_ROP_TYPE__MASK                          0x00300000
> +#define VIVS_DE_BLOCK8_ROP_TYPE__SHIFT                         20
> +#define VIVS_DE_BLOCK8_ROP_TYPE_ROP2_PATTERN                   0x00000000
> +#define VIVS_DE_BLOCK8_ROP_TYPE_ROP2_SOURCE                    0x00100000
> +#define VIVS_DE_BLOCK8_ROP_TYPE_ROP3                           0x00200000
> +#define VIVS_DE_BLOCK8_ROP_TYPE_ROP4                           0x00300000
> +
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL(i0)                      (0x00012b00 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL__ESIZE                    0x00000004
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL__LEN                      0x00000008
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL_ENABLE__MASK              0x00000001
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL_ENABLE__SHIFT             0
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL_ENABLE_OFF                        0x00000000
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL_ENABLE_ON                 0x00000001
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__MASK       0x00ff0000
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__SHIFT      16
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA(x)  (((x) << VIVS_DE_BLOCK8_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__SHIFT) & VIVS_DE_BLOCK8_ALPHA_CONTROL_PE10_GLOBAL_SRC_ALPHA__MASK)
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__MASK       0xff000000
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__SHIFT      24
> +#define VIVS_DE_BLOCK8_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA(x)  (((x) << VIVS_DE_BLOCK8_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__SHIFT) & VIVS_DE_BLOCK8_ALPHA_CONTROL_PE10_GLOBAL_DST_ALPHA__MASK)
> +
> +#define VIVS_DE_BLOCK8_ALPHA_MODES(i0)                        (0x00012b20 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_ALPHA_MODES__ESIZE                      0x00000004
> +#define VIVS_DE_BLOCK8_ALPHA_MODES__LEN                                0x00000008
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_ALPHA_MODE__MASK                0x00000001
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_ALPHA_MODE__SHIFT       0
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_ALPHA_MODE_NORMAL       0x00000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_ALPHA_MODE_INVERSED     0x00000001
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_ALPHA_MODE__MASK                0x00000010
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_ALPHA_MODE__SHIFT       4
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_ALPHA_MODE_NORMAL       0x00000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_ALPHA_MODE_INVERSED     0x00000010
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE__MASK 0x00000300
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE__SHIFT        8
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE_NORMAL        0x00000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE_GLOBAL        0x00000100
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_GLOBAL_SRC_ALPHA_MODE_SCALED        0x00000200
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE__MASK 0x00003000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE__SHIFT        12
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE_NORMAL        0x00000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE_GLOBAL        0x00001000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_GLOBAL_DST_ALPHA_MODE_SCALED        0x00002000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY__MASK       0x00010000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY__SHIFT      16
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY_DISABLE     0x00000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_PE10_SRC_COLOR_MULTIPLY_ENABLE      0x00010000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY__MASK       0x00100000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY__SHIFT      20
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY_DISABLE     0x00000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_PE10_DST_COLOR_MULTIPLY_ENABLE      0x00100000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_BLENDING_MODE__MASK     0x07000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_BLENDING_MODE__SHIFT    24
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_BLENDING_MODE(x)                (((x) << VIVS_DE_BLOCK8_ALPHA_MODES_SRC_BLENDING_MODE__SHIFT) & VIVS_DE_BLOCK8_ALPHA_MODES_SRC_BLENDING_MODE__MASK)
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_ALPHA_FACTOR__MASK      0x08000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_ALPHA_FACTOR__SHIFT     27
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_ALPHA_FACTOR_DISABLE    0x00000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_SRC_ALPHA_FACTOR_ENABLE     0x08000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_BLENDING_MODE__MASK     0x70000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_BLENDING_MODE__SHIFT    28
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_BLENDING_MODE(x)                (((x) << VIVS_DE_BLOCK8_ALPHA_MODES_DST_BLENDING_MODE__SHIFT) & VIVS_DE_BLOCK8_ALPHA_MODES_DST_BLENDING_MODE__MASK)
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_ALPHA_FACTOR__MASK      0x80000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_ALPHA_FACTOR__SHIFT     31
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_ALPHA_FACTOR_DISABLE    0x00000000
> +#define VIVS_DE_BLOCK8_ALPHA_MODES_DST_ALPHA_FACTOR_ENABLE     0x80000000
> +
> +#define VIVS_DE_BLOCK8_ADDRESS_U(i0)                          (0x00012b40 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_ADDRESS_U__ESIZE                                0x00000004
> +#define VIVS_DE_BLOCK8_ADDRESS_U__LEN                          0x00000008
> +
> +#define VIVS_DE_BLOCK8_STRIDE_U(i0)                           (0x00012b60 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_STRIDE_U__ESIZE                         0x00000004
> +#define VIVS_DE_BLOCK8_STRIDE_U__LEN                           0x00000008
> +#define VIVS_DE_BLOCK8_STRIDE_U_STRIDE__MASK                   0x0003ffff
> +#define VIVS_DE_BLOCK8_STRIDE_U_STRIDE__SHIFT                  0
> +#define VIVS_DE_BLOCK8_STRIDE_U_STRIDE(x)                      (((x) << VIVS_DE_BLOCK8_STRIDE_U_STRIDE__SHIFT) & VIVS_DE_BLOCK8_STRIDE_U_STRIDE__MASK)
> +
> +#define VIVS_DE_BLOCK8_ADDRESS_V(i0)                          (0x00012b80 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_ADDRESS_V__ESIZE                                0x00000004
> +#define VIVS_DE_BLOCK8_ADDRESS_V__LEN                          0x00000008
> +
> +#define VIVS_DE_BLOCK8_STRIDE_V(i0)                           (0x00012ba0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_STRIDE_V__ESIZE                         0x00000004
> +#define VIVS_DE_BLOCK8_STRIDE_V__LEN                           0x00000008
> +#define VIVS_DE_BLOCK8_STRIDE_V_STRIDE__MASK                   0x0003ffff
> +#define VIVS_DE_BLOCK8_STRIDE_V_STRIDE__SHIFT                  0
> +#define VIVS_DE_BLOCK8_STRIDE_V_STRIDE(x)                      (((x) << VIVS_DE_BLOCK8_STRIDE_V_STRIDE__SHIFT) & VIVS_DE_BLOCK8_STRIDE_V_STRIDE__MASK)
> +
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_HEIGHT(i0)                (0x00012bc0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_HEIGHT__ESIZE              0x00000004
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_HEIGHT__LEN                        0x00000008
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_HEIGHT_HEIGHT__MASK                0x0000ffff
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_HEIGHT_HEIGHT__SHIFT       0
> +#define VIVS_DE_BLOCK8_SRC_ROTATION_HEIGHT_HEIGHT(x)           (((x) << VIVS_DE_BLOCK8_SRC_ROTATION_HEIGHT_HEIGHT__SHIFT) & VIVS_DE_BLOCK8_SRC_ROTATION_HEIGHT_HEIGHT__MASK)
> +
> +#define VIVS_DE_BLOCK8_ROT_ANGLE(i0)                          (0x00012be0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_ROT_ANGLE__ESIZE                                0x00000004
> +#define VIVS_DE_BLOCK8_ROT_ANGLE__LEN                          0x00000008
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_SRC__MASK                     0x00000007
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_SRC__SHIFT                    0
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_SRC(x)                                (((x) << VIVS_DE_BLOCK8_ROT_ANGLE_SRC__SHIFT) & VIVS_DE_BLOCK8_ROT_ANGLE_SRC__MASK)
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_DST__MASK                     0x00000038
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_DST__SHIFT                    3
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_DST(x)                                (((x) << VIVS_DE_BLOCK8_ROT_ANGLE_DST__SHIFT) & VIVS_DE_BLOCK8_ROT_ANGLE_DST__MASK)
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_SRC_MASK                      0x00000100
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_DST_MASK                      0x00000200
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_SRC_MIRROR__MASK              0x00003000
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_SRC_MIRROR__SHIFT             12
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_SRC_MIRROR(x)                 (((x) << VIVS_DE_BLOCK8_ROT_ANGLE_SRC_MIRROR__SHIFT) & VIVS_DE_BLOCK8_ROT_ANGLE_SRC_MIRROR__MASK)
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_SRC_MIRROR_MASK               0x00008000
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_DST_MIRROR__MASK              0x00030000
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_DST_MIRROR__SHIFT             16
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_DST_MIRROR(x)                 (((x) << VIVS_DE_BLOCK8_ROT_ANGLE_DST_MIRROR__SHIFT) & VIVS_DE_BLOCK8_ROT_ANGLE_DST_MIRROR__MASK)
> +#define VIVS_DE_BLOCK8_ROT_ANGLE_DST_MIRROR_MASK               0x00080000
> +
> +#define VIVS_DE_BLOCK8_GLOBAL_SRC_COLOR(i0)                   (0x00012c00 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_GLOBAL_SRC_COLOR__ESIZE                 0x00000004
> +#define VIVS_DE_BLOCK8_GLOBAL_SRC_COLOR__LEN                   0x00000008
> +
> +#define VIVS_DE_BLOCK8_GLOBAL_DEST_COLOR(i0)                  (0x00012c20 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_GLOBAL_DEST_COLOR__ESIZE                        0x00000004
> +#define VIVS_DE_BLOCK8_GLOBAL_DEST_COLOR__LEN                  0x00000008
> +
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES(i0)                       (0x00012c40 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES__ESIZE             0x00000004
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES__LEN               0x00000008
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY__MASK      0x00000001
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY__SHIFT     0
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY_DISABLE    0x00000000
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_SRC_PREMULTIPLY_ENABLE     0x00000001
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY__MASK      0x00000010
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY__SHIFT     4
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY_DISABLE    0x00000000
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_DST_PREMULTIPLY_ENABLE     0x00000010
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY__MASK       0x00000300
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY__SHIFT      8
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY_DISABLE     0x00000000
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY_ALPHA       0x00000100
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_SRC_GLOBAL_PREMULTIPLY_COLOR       0x00000200
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY__MASK       0x00100000
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY__SHIFT      20
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY_DISABLE     0x00000000
> +#define VIVS_DE_BLOCK8_COLOR_MULTIPLY_MODES_DST_DEMULTIPLY_ENABLE      0x00100000
> +
> +#define VIVS_DE_BLOCK8_TRANSPARENCY(i0)                               (0x00012c60 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_TRANSPARENCY__ESIZE                     0x00000004
> +#define VIVS_DE_BLOCK8_TRANSPARENCY__LEN                       0x00000008
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_SOURCE__MASK               0x00000003
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_SOURCE__SHIFT              0
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_SOURCE_OPAQUE              0x00000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_SOURCE_MASK                        0x00000001
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_SOURCE_KEY                 0x00000002
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_PATTERN__MASK              0x00000030
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_PATTERN__SHIFT             4
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_PATTERN_OPAQUE             0x00000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_PATTERN_MASK               0x00000010
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_PATTERN_KEY                        0x00000020
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_DESTINATION__MASK          0x00000300
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_DESTINATION__SHIFT         8
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_DESTINATION_OPAQUE         0x00000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_DESTINATION_MASK           0x00000100
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_DESTINATION_KEY            0x00000200
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_TRANSPARENCY_MASK          0x00001000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_SRC_OVERRIDE__MASK     0x00030000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_SRC_OVERRIDE__SHIFT    16
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_SRC_OVERRIDE_DEFAULT   0x00000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_SRC_OVERRIDE_USE_ENABLE        0x00010000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_SRC_OVERRIDE_USE_DISABLE       0x00020000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_PAT_OVERRIDE__MASK     0x00300000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_PAT_OVERRIDE__SHIFT    20
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_PAT_OVERRIDE_DEFAULT   0x00000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_PAT_OVERRIDE_USE_ENABLE        0x00100000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_PAT_OVERRIDE_USE_DISABLE       0x00200000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_DST_OVERRIDE__MASK     0x03000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_DST_OVERRIDE__SHIFT    24
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_DST_OVERRIDE_DEFAULT   0x00000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_DST_OVERRIDE_USE_ENABLE        0x01000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_USE_DST_OVERRIDE_USE_DISABLE       0x02000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_RESOURCE_OVERRIDE_MASK     0x10000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_DFB_COLOR_KEY__MASK                0x20000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_DFB_COLOR_KEY__SHIFT       29
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_DFB_COLOR_KEY_DISABLE      0x00000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_DFB_COLOR_KEY_ENABLE       0x20000000
> +#define VIVS_DE_BLOCK8_TRANSPARENCY_DFB_COLOR_KEY_MASK         0x80000000
> +
> +#define VIVS_DE_BLOCK8_CONTROL(i0)                            (0x00012c80 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_CONTROL__ESIZE                          0x00000004
> +#define VIVS_DE_BLOCK8_CONTROL__LEN                            0x00000008
> +#define VIVS_DE_BLOCK8_CONTROL_YUV__MASK                       0x00000001
> +#define VIVS_DE_BLOCK8_CONTROL_YUV__SHIFT                      0
> +#define VIVS_DE_BLOCK8_CONTROL_YUV_601                         0x00000000
> +#define VIVS_DE_BLOCK8_CONTROL_YUV_709                         0x00000001
> +#define VIVS_DE_BLOCK8_CONTROL_YUV_MASK                                0x00000008
> +#define VIVS_DE_BLOCK8_CONTROL_UV_SWIZZLE__MASK                        0x00000010
> +#define VIVS_DE_BLOCK8_CONTROL_UV_SWIZZLE__SHIFT               4
> +#define VIVS_DE_BLOCK8_CONTROL_UV_SWIZZLE_UV                   0x00000000
> +#define VIVS_DE_BLOCK8_CONTROL_UV_SWIZZLE_VU                   0x00000010
> +#define VIVS_DE_BLOCK8_CONTROL_UV_SWIZZLE_MASK                 0x00000080
> +#define VIVS_DE_BLOCK8_CONTROL_YUVRGB__MASK                    0x00000100
> +#define VIVS_DE_BLOCK8_CONTROL_YUVRGB__SHIFT                   8
> +#define VIVS_DE_BLOCK8_CONTROL_YUVRGB_DISABLE                  0x00000000
> +#define VIVS_DE_BLOCK8_CONTROL_YUVRGB_ENABLE                   0x00000100
> +#define VIVS_DE_BLOCK8_CONTROL_YUVRGB_MASK                     0x00000800
> +
> +#define VIVS_DE_BLOCK8_SRC_COLOR_KEY_HIGH(i0)                 (0x00012ca0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_COLOR_KEY_HIGH__ESIZE               0x00000004
> +#define VIVS_DE_BLOCK8_SRC_COLOR_KEY_HIGH__LEN                 0x00000008
> +
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG(i0)                      (0x00012cc0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG__ESIZE                    0x00000004
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG__LEN                      0x00000008
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_MULTI_TILED__MASK         0x00000001
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_MULTI_TILED__SHIFT                0
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_MULTI_TILED_DISABLE       0x00000000
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_MULTI_TILED_ENABLE                0x00000001
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_SUPER_TILED__MASK         0x00000008
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_SUPER_TILED__SHIFT                3
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_SUPER_TILED_DISABLE       0x00000000
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_SUPER_TILED_ENABLE                0x00000008
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_MINOR_TILED__MASK         0x00000100
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_MINOR_TILED__SHIFT                8
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_MINOR_TILED_DISABLE       0x00000000
> +#define VIVS_DE_BLOCK8_SRC_EX_CONFIG_MINOR_TILED_ENABLE                0x00000100
> +
> +#define VIVS_DE_BLOCK8_SRC_EX_ADDRESS(i0)                     (0x00012ce0 + 0x4*(i0))
> +#define VIVS_DE_BLOCK8_SRC_EX_ADDRESS__ESIZE                   0x00000004
> +#define VIVS_DE_BLOCK8_SRC_EX_ADDRESS__LEN                     0x00000008
> +
> +
> +#endif /* STATE_2D_XML */
> diff --git a/src/gallium/drivers/etnaviv/meson.build b/src/gallium/drivers/etnaviv/meson.build
> index 75ed93eccc71..9726f388ea8e 100644
> --- a/src/gallium/drivers/etnaviv/meson.build
> +++ b/src/gallium/drivers/etnaviv/meson.build
> @@ -23,10 +23,13 @@ files_etnaviv = files(
>    'hw/common.xml.h',
>    'hw/common_3d.xml.h',
>    'hw/isa.xml.h',
> +  'hw/state_2d.xml.h',
>    'hw/state_3d.xml.h',
>    'hw/state_blt.xml.h',
>    'hw/state.xml.h',
>    'hw/texdesc_3d.xml.h',
> +  'etnaviv_2d.c',
> +  'etnaviv_2d.h',
>    'etnaviv_asm.c',
>    'etnaviv_asm.h',
>    'etnaviv_blend.c',
> --
> 2.20.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev



-- 
greets
--
Christian Gmeiner, MSc

https://christian-gmeiner.info


More information about the mesa-dev mailing list