On Tue, Aug 30, 2016 at 5:08 AM, Daniel Vetter <daniel@xxxxxxxx> wrote: > On Tue, Aug 30, 2016 at 09:14:51AM +0200, Christian Gmeiner wrote: >> From: The etnaviv authors <dri-devel@xxxxxxxxxxxxxxxxxxxxx> >> >> This adds the following basic unit tests: >> >> - etnaviv_2d_test >> Let the 2D core render a defined pattern into a bo >> and store it as bmp. >> >> - etnaviv_bo_cache_test >> Basic tests to validate the bo-cache behavior. >> >> - etnaviv_cmd_stream_test >> Tests for the etna_cmd_stream API. > > igt (now at a new location at > https://cgit.freedesktop.org/drm/igt-gpu-tools/) would be a nice place for > these I think, if you want to participate there. vc4 has tests in there, > and collabora is porting a lot of the kms tests to be generic (so that > they can be run on any kms driver). Then you could just run those tests on > any driver and have a reasonable assurance you didn't break the world. well, I guess you wouldn't run these tests on, for example radeon hw ;-) but using common framework isn't a horrible idea.. one of these days I'd like to move my few msmtest's to igt.. but, $bigger_fires ;-) BR, -R > But up to you really. > -Daniel >> >> Signed-off-by: Christian Gmeiner <christian.gmeiner@xxxxxxxxx> >> Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> >> --- >> .gitignore | 3 + >> configure.ac | 1 + >> tests/Makefile.am | 4 + >> tests/etnaviv/Makefile.am | 41 + >> tests/etnaviv/cmdstream.xml.h | 218 +++++ >> tests/etnaviv/etnaviv_2d_test.c | 238 +++++ >> tests/etnaviv/etnaviv_bo_cache_test.c | 122 +++ >> tests/etnaviv/etnaviv_cmd_stream_test.c | 123 +++ >> tests/etnaviv/state.xml.h | 348 ++++++++ >> tests/etnaviv/state_2d.xml.h | 1473 +++++++++++++++++++++++++++++++ >> tests/etnaviv/write_bmp.c | 152 ++++ >> tests/etnaviv/write_bmp.h | 34 + >> 12 files changed, 2757 insertions(+) >> create mode 100644 tests/etnaviv/Makefile.am >> create mode 100644 tests/etnaviv/cmdstream.xml.h >> create mode 100644 tests/etnaviv/etnaviv_2d_test.c >> create mode 100644 tests/etnaviv/etnaviv_bo_cache_test.c >> create mode 100644 tests/etnaviv/etnaviv_cmd_stream_test.c >> create mode 100644 tests/etnaviv/state.xml.h >> create mode 100644 tests/etnaviv/state_2d.xml.h >> create mode 100644 tests/etnaviv/write_bmp.c >> create mode 100644 tests/etnaviv/write_bmp.h >> >> diff --git a/.gitignore b/.gitignore >> index 3226b3a..d51e619 100644 >> --- a/.gitignore >> +++ b/.gitignore >> @@ -102,4 +102,7 @@ tests/radeon/radeon_ttm >> tests/exynos/exynos_fimg2d_event >> tests/exynos/exynos_fimg2d_perf >> tests/exynos/exynos_fimg2d_test >> +tests/etnaviv/etnaviv_2d_test >> +tests/etnaviv/etnaviv_cmd_stream_test >> +tests/etnaviv/etnaviv_bo_cache_test >> man/*.3 >> diff --git a/configure.ac b/configure.ac >> index 64f3e6c..330358a 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -551,6 +551,7 @@ AC_CONFIG_FILES([ >> tests/exynos/Makefile >> tests/tegra/Makefile >> tests/nouveau/Makefile >> + tests/etnaviv/Makefile >> tests/util/Makefile >> man/Makefile >> libdrm.pc]) >> diff --git a/tests/Makefile.am b/tests/Makefile.am >> index 58feb12..4a499e4 100644 >> --- a/tests/Makefile.am >> +++ b/tests/Makefile.am >> @@ -22,6 +22,10 @@ if HAVE_TEGRA >> SUBDIRS += tegra >> endif >> >> +if HAVE_ETNAVIV >> +SUBDIRS += etnaviv >> +endif >> + >> AM_CFLAGS = \ >> $(WARN_CFLAGS)\ >> -I $(top_srcdir)/include/drm \ >> diff --git a/tests/etnaviv/Makefile.am b/tests/etnaviv/Makefile.am >> new file mode 100644 >> index 0000000..0631864 >> --- /dev/null >> +++ b/tests/etnaviv/Makefile.am >> @@ -0,0 +1,41 @@ >> +AM_CFLAGS = \ >> + -I $(top_srcdir)/include/drm \ >> + -I $(top_srcdir)/etnaviv \ >> + -I $(top_srcdir) >> + >> +if HAVE_INSTALL_TESTS >> +bin_PROGRAMS = \ >> + etnaviv_2d_test \ >> + etnaviv_cmd_stream_test \ >> + etnaviv_bo_cache_test >> +else >> +noinst_PROGRAMS = \ >> + etnaviv_2d_test \ >> + etnaviv_cmd_stream_test \ >> + etnaviv_bo_cache_test >> +endif >> + >> +etnaviv_2d_test_LDADD = \ >> + $(top_builddir)/libdrm.la \ >> + $(top_builddir)/etnaviv/libdrm_etnaviv.la >> + >> +etnaviv_2d_test_SOURCES = \ >> + cmdstream.xml.h \ >> + etnaviv_2d_test.c \ >> + state.xml.h \ >> + state_2d.xml.h \ >> + write_bmp.c \ >> + write_bmp.h >> + >> +etnaviv_cmd_stream_test_LDADD = \ >> + $(top_builddir)/etnaviv/libdrm_etnaviv.la >> + >> +etnaviv_cmd_stream_test_SOURCES = \ >> + etnaviv_cmd_stream_test.c >> + >> +etnaviv_bo_cache_test_LDADD = \ >> + $(top_builddir)/libdrm.la \ >> + $(top_builddir)/etnaviv/libdrm_etnaviv.la >> + >> +etnaviv_bo_cache_test_SOURCES = \ >> + etnaviv_bo_cache_test.c >> diff --git a/tests/etnaviv/cmdstream.xml.h b/tests/etnaviv/cmdstream.xml.h >> new file mode 100644 >> index 0000000..844f829 >> --- /dev/null >> +++ b/tests/etnaviv/cmdstream.xml.h >> @@ -0,0 +1,218 @@ >> +#ifndef CMDSTREAM_XML >> +#define CMDSTREAM_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: >> +- /home/orion/projects/etna_viv/rnndb/cmdstream.xml ( 12589 bytes, from 2013-09-01 10:53:22) >> +- /home/orion/projects/etna_viv/rnndb/common.xml ( 18379 bytes, from 2014-01-27 15:58:05) >> + >> +Copyright (C) 2013 >> +*/ >> + >> + >> +#define FE_OPCODE_LOAD_STATE 0x00000001 >> +#define FE_OPCODE_END 0x00000002 >> +#define FE_OPCODE_NOP 0x00000003 >> +#define FE_OPCODE_DRAW_2D 0x00000004 >> +#define FE_OPCODE_DRAW_PRIMITIVES 0x00000005 >> +#define FE_OPCODE_DRAW_INDEXED_PRIMITIVES 0x00000006 >> +#define FE_OPCODE_WAIT 0x00000007 >> +#define FE_OPCODE_LINK 0x00000008 >> +#define FE_OPCODE_STALL 0x00000009 >> +#define FE_OPCODE_CALL 0x0000000a >> +#define FE_OPCODE_RETURN 0x0000000b >> +#define FE_OPCODE_CHIP_SELECT 0x0000000d >> +#define PRIMITIVE_TYPE_POINTS 0x00000001 >> +#define PRIMITIVE_TYPE_LINES 0x00000002 >> +#define PRIMITIVE_TYPE_LINE_STRIP 0x00000003 >> +#define PRIMITIVE_TYPE_TRIANGLES 0x00000004 >> +#define PRIMITIVE_TYPE_TRIANGLE_STRIP 0x00000005 >> +#define PRIMITIVE_TYPE_TRIANGLE_FAN 0x00000006 >> +#define PRIMITIVE_TYPE_LINE_LOOP 0x00000007 >> +#define PRIMITIVE_TYPE_QUADS 0x00000008 >> +#define VIV_FE_LOAD_STATE 0x00000000 >> + >> +#define VIV_FE_LOAD_STATE_HEADER 0x00000000 >> +#define VIV_FE_LOAD_STATE_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_LOAD_STATE_HEADER_OP__SHIFT 27 >> +#define VIV_FE_LOAD_STATE_HEADER_OP_LOAD_STATE 0x08000000 >> +#define VIV_FE_LOAD_STATE_HEADER_FIXP 0x04000000 >> +#define VIV_FE_LOAD_STATE_HEADER_COUNT__MASK 0x03ff0000 >> +#define VIV_FE_LOAD_STATE_HEADER_COUNT__SHIFT 16 >> +#define VIV_FE_LOAD_STATE_HEADER_COUNT(x) (((x) << VIV_FE_LOAD_STATE_HEADER_COUNT__SHIFT) & VIV_FE_LOAD_STATE_HEADER_COUNT__MASK) >> +#define VIV_FE_LOAD_STATE_HEADER_OFFSET__MASK 0x0000ffff >> +#define VIV_FE_LOAD_STATE_HEADER_OFFSET__SHIFT 0 >> +#define VIV_FE_LOAD_STATE_HEADER_OFFSET(x) (((x) << VIV_FE_LOAD_STATE_HEADER_OFFSET__SHIFT) & VIV_FE_LOAD_STATE_HEADER_OFFSET__MASK) >> +#define VIV_FE_LOAD_STATE_HEADER_OFFSET__SHR 2 >> + >> +#define VIV_FE_END 0x00000000 >> + >> +#define VIV_FE_END_HEADER 0x00000000 >> +#define VIV_FE_END_HEADER_EVENT_ID__MASK 0x0000001f >> +#define VIV_FE_END_HEADER_EVENT_ID__SHIFT 0 >> +#define VIV_FE_END_HEADER_EVENT_ID(x) (((x) << VIV_FE_END_HEADER_EVENT_ID__SHIFT) & VIV_FE_END_HEADER_EVENT_ID__MASK) >> +#define VIV_FE_END_HEADER_EVENT_ENABLE 0x00000100 >> +#define VIV_FE_END_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_END_HEADER_OP__SHIFT 27 >> +#define VIV_FE_END_HEADER_OP_END 0x10000000 >> + >> +#define VIV_FE_NOP 0x00000000 >> + >> +#define VIV_FE_NOP_HEADER 0x00000000 >> +#define VIV_FE_NOP_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_NOP_HEADER_OP__SHIFT 27 >> +#define VIV_FE_NOP_HEADER_OP_NOP 0x18000000 >> + >> +#define VIV_FE_DRAW_2D 0x00000000 >> + >> +#define VIV_FE_DRAW_2D_HEADER 0x00000000 >> +#define VIV_FE_DRAW_2D_HEADER_COUNT__MASK 0x0000ff00 >> +#define VIV_FE_DRAW_2D_HEADER_COUNT__SHIFT 8 >> +#define VIV_FE_DRAW_2D_HEADER_COUNT(x) (((x) << VIV_FE_DRAW_2D_HEADER_COUNT__SHIFT) & VIV_FE_DRAW_2D_HEADER_COUNT__MASK) >> +#define VIV_FE_DRAW_2D_HEADER_DATA_COUNT__MASK 0x07ff0000 >> +#define VIV_FE_DRAW_2D_HEADER_DATA_COUNT__SHIFT 16 >> +#define VIV_FE_DRAW_2D_HEADER_DATA_COUNT(x) (((x) << VIV_FE_DRAW_2D_HEADER_DATA_COUNT__SHIFT) & VIV_FE_DRAW_2D_HEADER_DATA_COUNT__MASK) >> +#define VIV_FE_DRAW_2D_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_DRAW_2D_HEADER_OP__SHIFT 27 >> +#define VIV_FE_DRAW_2D_HEADER_OP_DRAW_2D 0x20000000 >> + >> +#define VIV_FE_DRAW_2D_TOP_LEFT 0x00000008 >> +#define VIV_FE_DRAW_2D_TOP_LEFT_X__MASK 0x0000ffff >> +#define VIV_FE_DRAW_2D_TOP_LEFT_X__SHIFT 0 >> +#define VIV_FE_DRAW_2D_TOP_LEFT_X(x) (((x) << VIV_FE_DRAW_2D_TOP_LEFT_X__SHIFT) & VIV_FE_DRAW_2D_TOP_LEFT_X__MASK) >> +#define VIV_FE_DRAW_2D_TOP_LEFT_Y__MASK 0xffff0000 >> +#define VIV_FE_DRAW_2D_TOP_LEFT_Y__SHIFT 16 >> +#define VIV_FE_DRAW_2D_TOP_LEFT_Y(x) (((x) << VIV_FE_DRAW_2D_TOP_LEFT_Y__SHIFT) & VIV_FE_DRAW_2D_TOP_LEFT_Y__MASK) >> + >> +#define VIV_FE_DRAW_2D_BOTTOM_RIGHT 0x0000000c >> +#define VIV_FE_DRAW_2D_BOTTOM_RIGHT_X__MASK 0x0000ffff >> +#define VIV_FE_DRAW_2D_BOTTOM_RIGHT_X__SHIFT 0 >> +#define VIV_FE_DRAW_2D_BOTTOM_RIGHT_X(x) (((x) << VIV_FE_DRAW_2D_BOTTOM_RIGHT_X__SHIFT) & VIV_FE_DRAW_2D_BOTTOM_RIGHT_X__MASK) >> +#define VIV_FE_DRAW_2D_BOTTOM_RIGHT_Y__MASK 0xffff0000 >> +#define VIV_FE_DRAW_2D_BOTTOM_RIGHT_Y__SHIFT 16 >> +#define VIV_FE_DRAW_2D_BOTTOM_RIGHT_Y(x) (((x) << VIV_FE_DRAW_2D_BOTTOM_RIGHT_Y__SHIFT) & VIV_FE_DRAW_2D_BOTTOM_RIGHT_Y__MASK) >> + >> +#define VIV_FE_DRAW_PRIMITIVES 0x00000000 >> + >> +#define VIV_FE_DRAW_PRIMITIVES_HEADER 0x00000000 >> +#define VIV_FE_DRAW_PRIMITIVES_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_DRAW_PRIMITIVES_HEADER_OP__SHIFT 27 >> +#define VIV_FE_DRAW_PRIMITIVES_HEADER_OP_DRAW_PRIMITIVES 0x28000000 >> + >> +#define VIV_FE_DRAW_PRIMITIVES_COMMAND 0x00000004 >> +#define VIV_FE_DRAW_PRIMITIVES_COMMAND_TYPE__MASK 0x000000ff >> +#define VIV_FE_DRAW_PRIMITIVES_COMMAND_TYPE__SHIFT 0 >> +#define VIV_FE_DRAW_PRIMITIVES_COMMAND_TYPE(x) (((x) << VIV_FE_DRAW_PRIMITIVES_COMMAND_TYPE__SHIFT) & VIV_FE_DRAW_PRIMITIVES_COMMAND_TYPE__MASK) >> + >> +#define VIV_FE_DRAW_PRIMITIVES_START 0x00000008 >> + >> +#define VIV_FE_DRAW_PRIMITIVES_COUNT 0x0000000c >> + >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES 0x00000000 >> + >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_HEADER 0x00000000 >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_HEADER_OP__SHIFT 27 >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_HEADER_OP_DRAW_INDEXED_PRIMITIVES 0x30000000 >> + >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_COMMAND 0x00000004 >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_COMMAND_TYPE__MASK 0x000000ff >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_COMMAND_TYPE__SHIFT 0 >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_COMMAND_TYPE(x) (((x) << VIV_FE_DRAW_INDEXED_PRIMITIVES_COMMAND_TYPE__SHIFT) & VIV_FE_DRAW_INDEXED_PRIMITIVES_COMMAND_TYPE__MASK) >> + >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_START 0x00000008 >> + >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_COUNT 0x0000000c >> + >> +#define VIV_FE_DRAW_INDEXED_PRIMITIVES_OFFSET 0x00000010 >> + >> +#define VIV_FE_WAIT 0x00000000 >> + >> +#define VIV_FE_WAIT_HEADER 0x00000000 >> +#define VIV_FE_WAIT_HEADER_DELAY__MASK 0x0000ffff >> +#define VIV_FE_WAIT_HEADER_DELAY__SHIFT 0 >> +#define VIV_FE_WAIT_HEADER_DELAY(x) (((x) << VIV_FE_WAIT_HEADER_DELAY__SHIFT) & VIV_FE_WAIT_HEADER_DELAY__MASK) >> +#define VIV_FE_WAIT_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_WAIT_HEADER_OP__SHIFT 27 >> +#define VIV_FE_WAIT_HEADER_OP_WAIT 0x38000000 >> + >> +#define VIV_FE_LINK 0x00000000 >> + >> +#define VIV_FE_LINK_HEADER 0x00000000 >> +#define VIV_FE_LINK_HEADER_PREFETCH__MASK 0x0000ffff >> +#define VIV_FE_LINK_HEADER_PREFETCH__SHIFT 0 >> +#define VIV_FE_LINK_HEADER_PREFETCH(x) (((x) << VIV_FE_LINK_HEADER_PREFETCH__SHIFT) & VIV_FE_LINK_HEADER_PREFETCH__MASK) >> +#define VIV_FE_LINK_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_LINK_HEADER_OP__SHIFT 27 >> +#define VIV_FE_LINK_HEADER_OP_LINK 0x40000000 >> + >> +#define VIV_FE_LINK_ADDRESS 0x00000004 >> + >> +#define VIV_FE_STALL 0x00000000 >> + >> +#define VIV_FE_STALL_HEADER 0x00000000 >> +#define VIV_FE_STALL_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_STALL_HEADER_OP__SHIFT 27 >> +#define VIV_FE_STALL_HEADER_OP_STALL 0x48000000 >> + >> +#define VIV_FE_STALL_TOKEN 0x00000004 >> +#define VIV_FE_STALL_TOKEN_FROM__MASK 0x0000001f >> +#define VIV_FE_STALL_TOKEN_FROM__SHIFT 0 >> +#define VIV_FE_STALL_TOKEN_FROM(x) (((x) << VIV_FE_STALL_TOKEN_FROM__SHIFT) & VIV_FE_STALL_TOKEN_FROM__MASK) >> +#define VIV_FE_STALL_TOKEN_TO__MASK 0x00001f00 >> +#define VIV_FE_STALL_TOKEN_TO__SHIFT 8 >> +#define VIV_FE_STALL_TOKEN_TO(x) (((x) << VIV_FE_STALL_TOKEN_TO__SHIFT) & VIV_FE_STALL_TOKEN_TO__MASK) >> + >> +#define VIV_FE_CALL 0x00000000 >> + >> +#define VIV_FE_CALL_HEADER 0x00000000 >> +#define VIV_FE_CALL_HEADER_PREFETCH__MASK 0x0000ffff >> +#define VIV_FE_CALL_HEADER_PREFETCH__SHIFT 0 >> +#define VIV_FE_CALL_HEADER_PREFETCH(x) (((x) << VIV_FE_CALL_HEADER_PREFETCH__SHIFT) & VIV_FE_CALL_HEADER_PREFETCH__MASK) >> +#define VIV_FE_CALL_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_CALL_HEADER_OP__SHIFT 27 >> +#define VIV_FE_CALL_HEADER_OP_CALL 0x50000000 >> + >> +#define VIV_FE_CALL_ADDRESS 0x00000004 >> + >> +#define VIV_FE_CALL_RETURN_PREFETCH 0x00000008 >> + >> +#define VIV_FE_CALL_RETURN_ADDRESS 0x0000000c >> + >> +#define VIV_FE_RETURN 0x00000000 >> + >> +#define VIV_FE_RETURN_HEADER 0x00000000 >> +#define VIV_FE_RETURN_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_RETURN_HEADER_OP__SHIFT 27 >> +#define VIV_FE_RETURN_HEADER_OP_RETURN 0x58000000 >> + >> +#define VIV_FE_CHIP_SELECT 0x00000000 >> + >> +#define VIV_FE_CHIP_SELECT_HEADER 0x00000000 >> +#define VIV_FE_CHIP_SELECT_HEADER_OP__MASK 0xf8000000 >> +#define VIV_FE_CHIP_SELECT_HEADER_OP__SHIFT 27 >> +#define VIV_FE_CHIP_SELECT_HEADER_OP_CHIP_SELECT 0x68000000 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP15 0x00008000 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP14 0x00004000 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP13 0x00002000 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP12 0x00001000 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP11 0x00000800 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP10 0x00000400 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP9 0x00000200 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP8 0x00000100 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP7 0x00000080 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP6 0x00000040 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP5 0x00000020 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP4 0x00000010 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP3 0x00000008 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP2 0x00000004 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP1 0x00000002 >> +#define VIV_FE_CHIP_SELECT_HEADER_ENABLE_CHIP0 0x00000001 >> + >> + >> +#endif /* CMDSTREAM_XML */ >> diff --git a/tests/etnaviv/etnaviv_2d_test.c b/tests/etnaviv/etnaviv_2d_test.c >> new file mode 100644 >> index 0000000..f18c289 >> --- /dev/null >> +++ b/tests/etnaviv/etnaviv_2d_test.c >> @@ -0,0 +1,238 @@ >> +/* >> + * Copyright (C) 2014-2015 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, sublicense, >> + * and/or sell copies of the Software, and to permit persons to whom the >> + * Software is furnished to do so, subject to the following conditions: >> + * >> + * The above copyright notice and this permission notice (including the next >> + * paragraph) shall be included in all copies or substantial portions of the >> + * Software. >> + * >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, >> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE >> + * SOFTWARE. >> + * >> + * Authors: >> + * Christian Gmeiner <christian.gmeiner@xxxxxxxxx> >> + */ >> + >> +#ifdef HAVE_CONFIG_H >> +# include "config.h" >> +#endif >> + >> +#include <fcntl.h> >> +#include <stdio.h> >> +#include <string.h> >> +#include <unistd.h> >> + >> +#include "xf86drm.h" >> +#include "etnaviv_drmif.h" >> +#include "etnaviv_drm.h" >> + >> +#include "state.xml.h" >> +#include "state_2d.xml.h" >> +#include "cmdstream.xml.h" >> + >> +#include "write_bmp.h" >> + >> +static inline void etna_emit_load_state(struct etna_cmd_stream *stream, >> + const uint16_t offset, const uint16_t count) >> +{ >> + uint32_t v; >> + >> + v = (VIV_FE_LOAD_STATE_HEADER_OP_LOAD_STATE | VIV_FE_LOAD_STATE_HEADER_OFFSET(offset) | >> + (VIV_FE_LOAD_STATE_HEADER_COUNT(count) & VIV_FE_LOAD_STATE_HEADER_COUNT__MASK)); >> + >> + etna_cmd_stream_emit(stream, v); >> +} >> + >> +static inline void etna_set_state(struct etna_cmd_stream *stream, uint32_t address, uint32_t value) >> +{ >> + etna_cmd_stream_reserve(stream, 2); >> + etna_emit_load_state(stream, address >> 2, 1); >> + etna_cmd_stream_emit(stream, value); >> +} >> + >> +static inline void etna_set_state_from_bo(struct etna_cmd_stream *stream, >> + uint32_t address, struct etna_bo *bo) >> +{ >> + etna_cmd_stream_reserve(stream, 2); >> + etna_emit_load_state(stream, address >> 2, 1); >> + >> + etna_cmd_stream_reloc(stream, &(struct etna_reloc){ >> + .bo = bo, >> + .flags = ETNA_RELOC_READ, >> + .offset = 0, >> + }); >> +} >> + >> +static void gen_cmd_stream(struct etna_cmd_stream *stream, struct etna_bo *bmp, const int width, const int height) >> +{ >> + int rec; >> + static int num_rects = 256; >> + >> + etna_set_state(stream, VIVS_DE_SRC_STRIDE, 0); >> + etna_set_state(stream, VIVS_DE_SRC_ROTATION_CONFIG, 0); >> + etna_set_state(stream, VIVS_DE_SRC_CONFIG, 0); >> + etna_set_state(stream, VIVS_DE_SRC_ORIGIN, 0); >> + etna_set_state(stream, VIVS_DE_SRC_SIZE, 0); >> + etna_set_state(stream, VIVS_DE_SRC_COLOR_BG, 0); >> + etna_set_state(stream, VIVS_DE_SRC_COLOR_FG, 0); >> + etna_set_state(stream, VIVS_DE_STRETCH_FACTOR_LOW, 0); >> + etna_set_state(stream, VIVS_DE_STRETCH_FACTOR_HIGH, 0); >> + etna_set_state_from_bo(stream, VIVS_DE_DEST_ADDRESS, bmp); >> + etna_set_state(stream, VIVS_DE_DEST_STRIDE, width*4); >> + etna_set_state(stream, VIVS_DE_DEST_ROTATION_CONFIG, 0); >> + etna_set_state(stream, VIVS_DE_DEST_CONFIG, >> + VIVS_DE_DEST_CONFIG_FORMAT(DE_FORMAT_A8R8G8B8) | >> + VIVS_DE_DEST_CONFIG_COMMAND_CLEAR | >> + VIVS_DE_DEST_CONFIG_SWIZZLE(DE_SWIZZLE_ARGB) | >> + VIVS_DE_DEST_CONFIG_TILED_DISABLE | >> + VIVS_DE_DEST_CONFIG_MINOR_TILED_DISABLE >> + ); >> + etna_set_state(stream, VIVS_DE_ROP, >> + VIVS_DE_ROP_ROP_FG(0xcc) | VIVS_DE_ROP_ROP_BG(0xcc) | VIVS_DE_ROP_TYPE_ROP4); >> + etna_set_state(stream, VIVS_DE_CLIP_TOP_LEFT, >> + VIVS_DE_CLIP_TOP_LEFT_X(0) | >> + VIVS_DE_CLIP_TOP_LEFT_Y(0) >> + ); >> + etna_set_state(stream, VIVS_DE_CLIP_BOTTOM_RIGHT, >> + VIVS_DE_CLIP_BOTTOM_RIGHT_X(width) | >> + VIVS_DE_CLIP_BOTTOM_RIGHT_Y(height) >> + ); >> + etna_set_state(stream, VIVS_DE_CONFIG, 0); /* TODO */ >> + etna_set_state(stream, VIVS_DE_SRC_ORIGIN_FRACTION, 0); >> + etna_set_state(stream, VIVS_DE_ALPHA_CONTROL, 0); >> + etna_set_state(stream, VIVS_DE_ALPHA_MODES, 0); >> + etna_set_state(stream, VIVS_DE_DEST_ROTATION_HEIGHT, 0); >> + etna_set_state(stream, VIVS_DE_SRC_ROTATION_HEIGHT, 0); >> + etna_set_state(stream, VIVS_DE_ROT_ANGLE, 0); >> + >> + /* Clear color PE20 */ >> + etna_set_state(stream, VIVS_DE_CLEAR_PIXEL_VALUE32, 0xff40ff40); >> + /* Clear color PE10 */ >> + etna_set_state(stream, VIVS_DE_CLEAR_BYTE_MASK, 0xff); >> + etna_set_state(stream, VIVS_DE_CLEAR_PIXEL_VALUE_LOW, 0xff40ff40); >> + etna_set_state(stream, VIVS_DE_CLEAR_PIXEL_VALUE_HIGH, 0xff40ff40); >> + >> + etna_set_state(stream, VIVS_DE_DEST_COLOR_KEY, 0); >> + etna_set_state(stream, VIVS_DE_GLOBAL_SRC_COLOR, 0); >> + etna_set_state(stream, VIVS_DE_GLOBAL_DEST_COLOR, 0); >> + etna_set_state(stream, VIVS_DE_COLOR_MULTIPLY_MODES, 0); >> + etna_set_state(stream, VIVS_DE_PE_TRANSPARENCY, 0); >> + etna_set_state(stream, VIVS_DE_PE_CONTROL, 0); >> + etna_set_state(stream, VIVS_DE_PE_DITHER_LOW, 0xffffffff); >> + etna_set_state(stream, VIVS_DE_PE_DITHER_HIGH, 0xffffffff); >> + >> + /* Queue DE command */ >> + etna_cmd_stream_emit(stream, >> + VIV_FE_DRAW_2D_HEADER_OP_DRAW_2D | VIV_FE_DRAW_2D_HEADER_COUNT(num_rects) /* render one rectangle */ >> + ); >> + etna_cmd_stream_emit(stream, 0x0); /* rectangles start aligned */ >> + >> + for(rec=0; rec < num_rects; ++rec) { >> + int x = rec%16; >> + int y = rec/16; >> + etna_cmd_stream_emit(stream, VIV_FE_DRAW_2D_TOP_LEFT_X(x*8) | VIV_FE_DRAW_2D_TOP_LEFT_Y(y*8)); >> + etna_cmd_stream_emit(stream, VIV_FE_DRAW_2D_BOTTOM_RIGHT_X(x*8+4) | VIV_FE_DRAW_2D_BOTTOM_RIGHT_Y(y*8+4)); >> + } >> + etna_set_state(stream, 1, 0); >> + etna_set_state(stream, 1, 0); >> + etna_set_state(stream, 1, 0); >> + >> + etna_set_state(stream, VIVS_GL_FLUSH_CACHE, VIVS_GL_FLUSH_CACHE_PE2D); >> +} >> + >> +int main(int argc, char *argv[]) >> +{ >> + const int width = 256; >> + const int height = 256; >> + const size_t bmp_size = width * height * 4; >> + >> + struct etna_device *dev; >> + struct etna_gpu *gpu; >> + struct etna_pipe *pipe; >> + struct etna_bo *bmp; >> + struct etna_cmd_stream *stream; >> + >> + drmVersionPtr version; >> + int fd, ret = 0; >> + >> + fd = open(argv[1], O_RDWR); >> + if (fd < 0) >> + return 1; >> + >> + version = drmGetVersion(fd); >> + if (version) { >> + printf("Version: %d.%d.%d\n", version->version_major, >> + version->version_minor, version->version_patchlevel); >> + printf(" Name: %s\n", version->name); >> + printf(" Date: %s\n", version->date); >> + printf(" Description: %s\n", version->desc); >> + drmFreeVersion(version); >> + } >> + >> + dev = etna_device_new(fd); >> + if (!dev) { >> + ret = 2; >> + goto fail; >> + } >> + >> + /* TODO: we assume that core 0 is a 2D capable one */ >> + gpu = etna_gpu_new(dev, 0); >> + if (!gpu) { >> + ret = 3; >> + goto fail; >> + } >> + >> + pipe = etna_pipe_new(gpu, ETNA_PIPE_2D); >> + if (!pipe) { >> + ret = 4; >> + goto fail; >> + } >> + >> + bmp = etna_bo_new(dev, bmp_size, ETNA_BO_UNCACHED); >> + if (!bmp) { >> + ret = 5; >> + goto fail; >> + } >> + memset(etna_bo_map(bmp), 0, bmp_size); >> + >> + stream = etna_cmd_stream_new(pipe, 0x300, NULL, NULL); >> + if (!stream) { >> + ret = 6; >> + goto fail; >> + } >> + >> + /* generate command sequence */ >> + gen_cmd_stream(stream, bmp, width, height); >> + >> + etna_cmd_stream_finish(stream); >> + >> + bmp_dump32(etna_bo_map(bmp), width, height, false, "/tmp/etna.bmp"); >> + >> +fail: >> + if (stream) >> + etna_cmd_stream_del(stream); >> + >> + if (pipe) >> + etna_pipe_del(pipe); >> + >> + if (gpu) >> + etna_gpu_del(gpu); >> + >> + if (dev) >> + etna_device_del(dev); >> + >> + close(fd); >> + >> + return ret; >> +} >> diff --git a/tests/etnaviv/etnaviv_bo_cache_test.c b/tests/etnaviv/etnaviv_bo_cache_test.c >> new file mode 100644 >> index 0000000..1f18573 >> --- /dev/null >> +++ b/tests/etnaviv/etnaviv_bo_cache_test.c >> @@ -0,0 +1,122 @@ >> +/* >> + * Copyright (C) 2016 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, sublicense, >> + * and/or sell copies of the Software, and to permit persons to whom the >> + * Software is furnished to do so, subject to the following conditions: >> + * >> + * The above copyright notice and this permission notice (including the next >> + * paragraph) shall be included in all copies or substantial portions of the >> + * Software. >> + * >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, >> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE >> + * SOFTWARE. >> + * >> + * Authors: >> + * Christian Gmeiner <christian.gmeiner@xxxxxxxxx> >> + */ >> + >> +#ifdef HAVE_CONFIG_H >> +# include "config.h" >> +#endif >> + >> +#undef NDEBUG >> +#include <assert.h> >> + >> +#include <fcntl.h> >> +#include <stdio.h> >> +#include <string.h> >> +#include <unistd.h> >> + >> +#include "xf86drm.h" >> +#include "etnaviv_drmif.h" >> +#include "etnaviv_drm.h" >> + >> +static void test_cache(struct etna_device *dev) >> +{ >> + struct etna_bo *bo, *tmp; >> + >> + /* allocate and free some bo's with same size - we must >> + * get the same bo over and over. */ >> + printf("testing bo cache ... "); >> + >> + bo = tmp = etna_bo_new(dev, 0x100, ETNA_BO_UNCACHED); >> + assert(bo); >> + etna_bo_del(bo); >> + >> + for (unsigned i = 0; i < 100; i++) { >> + tmp = etna_bo_new(dev, 0x100, ETNA_BO_UNCACHED); >> + etna_bo_del(tmp); >> + assert(tmp == bo); >> + } >> + >> + printf("ok\n"); >> +} >> + >> +static void test_size_rounding(struct etna_device *dev) >> +{ >> + struct etna_bo *bo; >> + >> + printf("testing size rounding ... "); >> + >> + bo = etna_bo_new(dev, 15, ETNA_BO_UNCACHED); >> + assert(etna_bo_size(bo) == 4096); >> + etna_bo_del(bo); >> + >> + bo = etna_bo_new(dev, 4096, ETNA_BO_UNCACHED); >> + assert(etna_bo_size(bo) == 4096); >> + etna_bo_del(bo); >> + >> + bo = etna_bo_new(dev, 4100, ETNA_BO_UNCACHED); >> + assert(etna_bo_size(bo) == 8192); >> + etna_bo_del(bo); >> + >> + printf("ok\n"); >> +} >> + >> +int main(int argc, char *argv[]) >> +{ >> + struct etna_device *dev; >> + >> + drmVersionPtr version; >> + int fd, ret = 0; >> + >> + fd = open(argv[1], O_RDWR); >> + if (fd < 0) >> + return 1; >> + >> + version = drmGetVersion(fd); >> + if (version) { >> + printf("Version: %d.%d.%d\n", version->version_major, >> + version->version_minor, version->version_patchlevel); >> + printf(" Name: %s\n", version->name); >> + printf(" Date: %s\n", version->date); >> + printf(" Description: %s\n", version->desc); >> + drmFreeVersion(version); >> + } >> + >> + dev = etna_device_new(fd); >> + if (!dev) { >> + ret = 2; >> + goto fail; >> + } >> + >> + test_cache(dev); >> + test_size_rounding(dev); >> + >> +fail: >> + if (dev) >> + etna_device_del(dev); >> + >> + close(fd); >> + >> + return ret; >> +} >> diff --git a/tests/etnaviv/etnaviv_cmd_stream_test.c b/tests/etnaviv/etnaviv_cmd_stream_test.c >> new file mode 100644 >> index 0000000..4188eff >> --- /dev/null >> +++ b/tests/etnaviv/etnaviv_cmd_stream_test.c >> @@ -0,0 +1,123 @@ >> +/* >> + * Copyright (C) 2015 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, sublicense, >> + * and/or sell copies of the Software, and to permit persons to whom the >> + * Software is furnished to do so, subject to the following conditions: >> + * >> + * The above copyright notice and this permission notice (including the next >> + * paragraph) shall be included in all copies or substantial portions of the >> + * Software. >> + * >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, >> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE >> + * SOFTWARE. >> + * >> + * Authors: >> + * Christian Gmeiner <christian.gmeiner@xxxxxxxxx> >> + */ >> + >> +#undef NDEBUG >> +#include <assert.h> >> +#include <string.h> >> +#include <stdio.h> >> + >> +#include "etnaviv_drmif.h" >> + >> +static void test_avail() >> +{ >> + struct etna_cmd_stream *stream; >> + >> + printf("testing etna_cmd_stream_avail ... "); >> + >> + /* invalid size */ >> + stream = etna_cmd_stream_new(NULL, 0, NULL, NULL); >> + assert(stream == NULL); >> + >> + stream = etna_cmd_stream_new(NULL, 4, NULL, NULL); >> + assert(stream); >> + assert(etna_cmd_stream_avail(stream) == 2); >> + etna_cmd_stream_del(stream); >> + >> + stream = etna_cmd_stream_new(NULL, 20, NULL, NULL); >> + assert(stream); >> + assert(etna_cmd_stream_avail(stream) == 18); >> + etna_cmd_stream_del(stream); >> + >> + /* odd number of 32 bit words */ >> + stream = etna_cmd_stream_new(NULL, 1, NULL, NULL); >> + assert(stream); >> + assert(etna_cmd_stream_avail(stream) == 0); >> + etna_cmd_stream_del(stream); >> + >> + stream = etna_cmd_stream_new(NULL, 23, NULL, NULL); >> + assert(stream); >> + assert(etna_cmd_stream_avail(stream) == 22); >> + etna_cmd_stream_del(stream); >> + >> + printf("ok\n"); >> +} >> + >> +static void test_emit() >> +{ >> + struct etna_cmd_stream *stream; >> + >> + printf("testing etna_cmd_stream_emit ... "); >> + >> + stream = etna_cmd_stream_new(NULL, 6, NULL, NULL); >> + assert(stream); >> + assert(etna_cmd_stream_avail(stream) == 4); >> + >> + etna_cmd_stream_emit(stream, 0x1); >> + assert(etna_cmd_stream_avail(stream) == 3); >> + >> + etna_cmd_stream_emit(stream, 0x2); >> + assert(etna_cmd_stream_avail(stream) == 2); >> + >> + etna_cmd_stream_emit(stream, 0x3); >> + assert(etna_cmd_stream_avail(stream) == 1); >> + >> + etna_cmd_stream_del(stream); >> + >> + printf("ok\n"); >> +} >> + >> +static void test_offset() >> +{ >> + struct etna_cmd_stream *stream; >> + >> + printf("testing etna_cmd_stream_offset ... "); >> + >> + stream = etna_cmd_stream_new(NULL, 6, NULL, NULL); >> + assert(etna_cmd_stream_offset(stream) == 0); >> + >> + etna_cmd_stream_emit(stream, 0x1); >> + assert(etna_cmd_stream_offset(stream) == 1); >> + >> + etna_cmd_stream_emit(stream, 0x2); >> + assert(etna_cmd_stream_offset(stream) == 2); >> + >> + etna_cmd_stream_emit(stream, 0x3); >> + etna_cmd_stream_emit(stream, 0x4); >> + assert(etna_cmd_stream_offset(stream) == 4); >> + >> + etna_cmd_stream_del(stream); >> + >> + printf("ok\n"); >> +} >> + >> +int main(int argc, char *argv[]) >> +{ >> + test_avail(); >> + test_emit(); >> + test_offset(); >> + >> + return 0; >> +} >> diff --git a/tests/etnaviv/state.xml.h b/tests/etnaviv/state.xml.h >> new file mode 100644 >> index 0000000..e7b36df >> --- /dev/null >> +++ b/tests/etnaviv/state.xml.h >> @@ -0,0 +1,348 @@ >> +#ifndef STATE_XML >> +#define STATE_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: >> +- /home/orion/projects/etna_viv/rnndb/state.xml ( 18526 bytes, from 2013-09-11 16:52:32) >> +- /home/orion/projects/etna_viv/rnndb/common.xml ( 18379 bytes, from 2014-01-27 15:58:05) >> +- /home/orion/projects/etna_viv/rnndb/state_hi.xml ( 22236 bytes, from 2014-01-27 15:56:46) >> +- /home/orion/projects/etna_viv/rnndb/state_2d.xml ( 51191 bytes, from 2013-10-04 06:36:55) >> +- /home/orion/projects/etna_viv/rnndb/state_3d.xml ( 54570 bytes, from 2013-10-12 15:25:03) >> +- /home/orion/projects/etna_viv/rnndb/state_vg.xml ( 5942 bytes, from 2013-09-01 10:53:22) >> + >> +Copyright (C) 2013 >> +*/ >> + >> + >> +#define VARYING_COMPONENT_USE_UNUSED 0x00000000 >> +#define VARYING_COMPONENT_USE_USED 0x00000001 >> +#define VARYING_COMPONENT_USE_POINTCOORD_X 0x00000002 >> +#define VARYING_COMPONENT_USE_POINTCOORD_Y 0x00000003 >> +#define FE_VERTEX_STREAM_CONTROL_VERTEX_STRIDE__MASK 0x000000ff >> +#define FE_VERTEX_STREAM_CONTROL_VERTEX_STRIDE__SHIFT 0 >> +#define FE_VERTEX_STREAM_CONTROL_VERTEX_STRIDE(x) (((x) << FE_VERTEX_STREAM_CONTROL_VERTEX_STRIDE__SHIFT) & FE_VERTEX_STREAM_CONTROL_VERTEX_STRIDE__MASK) >> +#define VIVS_FE 0x00000000 >> + >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG(i0) (0x00000600 + 0x4*(i0)) >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG__ESIZE 0x00000004 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG__LEN 0x00000010 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE__MASK 0x0000000f >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE__SHIFT 0 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_BYTE 0x00000000 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_UNSIGNED_BYTE 0x00000001 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_SHORT 0x00000002 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_UNSIGNED_SHORT 0x00000003 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_INT 0x00000004 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_UNSIGNED_INT 0x00000005 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_FLOAT 0x00000008 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_HALF_FLOAT 0x00000009 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_FIXED 0x0000000b >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_INT_10_10_10_2 0x0000000c >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_TYPE_UNSIGNED_INT_10_10_10_2 0x0000000d >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_ENDIAN__MASK 0x00000030 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_ENDIAN__SHIFT 4 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_ENDIAN(x) (((x) << VIVS_FE_VERTEX_ELEMENT_CONFIG_ENDIAN__SHIFT) & VIVS_FE_VERTEX_ELEMENT_CONFIG_ENDIAN__MASK) >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_NONCONSECUTIVE 0x00000080 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_STREAM__MASK 0x00000700 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_STREAM__SHIFT 8 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_STREAM(x) (((x) << VIVS_FE_VERTEX_ELEMENT_CONFIG_STREAM__SHIFT) & VIVS_FE_VERTEX_ELEMENT_CONFIG_STREAM__MASK) >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_NUM__MASK 0x00003000 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_NUM__SHIFT 12 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_NUM(x) (((x) << VIVS_FE_VERTEX_ELEMENT_CONFIG_NUM__SHIFT) & VIVS_FE_VERTEX_ELEMENT_CONFIG_NUM__MASK) >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_NORMALIZE__MASK 0x0000c000 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_NORMALIZE__SHIFT 14 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_NORMALIZE_OFF 0x00000000 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_NORMALIZE_ON 0x00008000 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_START__MASK 0x00ff0000 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_START__SHIFT 16 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_START(x) (((x) << VIVS_FE_VERTEX_ELEMENT_CONFIG_START__SHIFT) & VIVS_FE_VERTEX_ELEMENT_CONFIG_START__MASK) >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_END__MASK 0xff000000 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_END__SHIFT 24 >> +#define VIVS_FE_VERTEX_ELEMENT_CONFIG_END(x) (((x) << VIVS_FE_VERTEX_ELEMENT_CONFIG_END__SHIFT) & VIVS_FE_VERTEX_ELEMENT_CONFIG_END__MASK) >> + >> +#define VIVS_FE_CMD_STREAM_BASE_ADDR 0x00000640 >> + >> +#define VIVS_FE_INDEX_STREAM_BASE_ADDR 0x00000644 >> + >> +#define VIVS_FE_INDEX_STREAM_CONTROL 0x00000648 >> +#define VIVS_FE_INDEX_STREAM_CONTROL_TYPE__MASK 0x00000003 >> +#define VIVS_FE_INDEX_STREAM_CONTROL_TYPE__SHIFT 0 >> +#define VIVS_FE_INDEX_STREAM_CONTROL_TYPE_UNSIGNED_CHAR 0x00000000 >> +#define VIVS_FE_INDEX_STREAM_CONTROL_TYPE_UNSIGNED_SHORT 0x00000001 >> +#define VIVS_FE_INDEX_STREAM_CONTROL_TYPE_UNSIGNED_INT 0x00000002 >> + >> +#define VIVS_FE_VERTEX_STREAM_BASE_ADDR 0x0000064c >> + >> +#define VIVS_FE_VERTEX_STREAM_CONTROL 0x00000650 >> + >> +#define VIVS_FE_COMMAND_ADDRESS 0x00000654 >> + >> +#define VIVS_FE_COMMAND_CONTROL 0x00000658 >> +#define VIVS_FE_COMMAND_CONTROL_PREFETCH__MASK 0x0000ffff >> +#define VIVS_FE_COMMAND_CONTROL_PREFETCH__SHIFT 0 >> +#define VIVS_FE_COMMAND_CONTROL_PREFETCH(x) (((x) << VIVS_FE_COMMAND_CONTROL_PREFETCH__SHIFT) & VIVS_FE_COMMAND_CONTROL_PREFETCH__MASK) >> +#define VIVS_FE_COMMAND_CONTROL_ENABLE 0x00010000 >> + >> +#define VIVS_FE_DMA_STATUS 0x0000065c >> + >> +#define VIVS_FE_DMA_DEBUG_STATE 0x00000660 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE__MASK 0x0000001f >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE__SHIFT 0 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_IDLE 0x00000000 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_DEC 0x00000001 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_ADR0 0x00000002 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_LOAD0 0x00000003 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_ADR1 0x00000004 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_LOAD1 0x00000005 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_3DADR 0x00000006 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_3DCMD 0x00000007 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_3DCNTL 0x00000008 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_3DIDXCNTL 0x00000009 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_INITREQDMA 0x0000000a >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_DRAWIDX 0x0000000b >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_DRAW 0x0000000c >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_2DRECT0 0x0000000d >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_2DRECT1 0x0000000e >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_2DDATA0 0x0000000f >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_2DDATA1 0x00000010 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_WAITFIFO 0x00000011 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_WAIT 0x00000012 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_LINK 0x00000013 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_END 0x00000014 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_STATE_STALL 0x00000015 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_DMA_STATE__MASK 0x00000300 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_DMA_STATE__SHIFT 8 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_DMA_STATE_IDLE 0x00000000 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_DMA_STATE_START 0x00000100 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_DMA_STATE_REQ 0x00000200 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_DMA_STATE_END 0x00000300 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_FETCH_STATE__MASK 0x00000c00 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_FETCH_STATE__SHIFT 10 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_FETCH_STATE_IDLE 0x00000000 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_FETCH_STATE_RAMVALID 0x00000400 >> +#define VIVS_FE_DMA_DEBUG_STATE_CMD_FETCH_STATE_VALID 0x00000800 >> +#define VIVS_FE_DMA_DEBUG_STATE_REQ_DMA_STATE__MASK 0x00003000 >> +#define VIVS_FE_DMA_DEBUG_STATE_REQ_DMA_STATE__SHIFT 12 >> +#define VIVS_FE_DMA_DEBUG_STATE_REQ_DMA_STATE_IDLE 0x00000000 >> +#define VIVS_FE_DMA_DEBUG_STATE_REQ_DMA_STATE_WAITIDX 0x00001000 >> +#define VIVS_FE_DMA_DEBUG_STATE_REQ_DMA_STATE_CAL 0x00002000 >> +#define VIVS_FE_DMA_DEBUG_STATE_CAL_STATE__MASK 0x0000c000 >> +#define VIVS_FE_DMA_DEBUG_STATE_CAL_STATE__SHIFT 14 >> +#define VIVS_FE_DMA_DEBUG_STATE_CAL_STATE_IDLE 0x00000000 >> +#define VIVS_FE_DMA_DEBUG_STATE_CAL_STATE_LDADR 0x00004000 >> +#define VIVS_FE_DMA_DEBUG_STATE_CAL_STATE_IDXCALC 0x00008000 >> +#define VIVS_FE_DMA_DEBUG_STATE_VE_REQ_STATE__MASK 0x00030000 >> +#define VIVS_FE_DMA_DEBUG_STATE_VE_REQ_STATE__SHIFT 16 >> +#define VIVS_FE_DMA_DEBUG_STATE_VE_REQ_STATE_IDLE 0x00000000 >> +#define VIVS_FE_DMA_DEBUG_STATE_VE_REQ_STATE_CKCACHE 0x00010000 >> +#define VIVS_FE_DMA_DEBUG_STATE_VE_REQ_STATE_MISS 0x00020000 >> + >> +#define VIVS_FE_DMA_ADDRESS 0x00000664 >> + >> +#define VIVS_FE_DMA_LOW 0x00000668 >> + >> +#define VIVS_FE_DMA_HIGH 0x0000066c >> + >> +#define VIVS_FE_AUTO_FLUSH 0x00000670 >> + >> +#define VIVS_FE_UNK00678 0x00000678 >> + >> +#define VIVS_FE_UNK0067C 0x0000067c >> + >> +#define VIVS_FE_VERTEX_STREAMS(i0) (0x00000000 + 0x4*(i0)) >> +#define VIVS_FE_VERTEX_STREAMS__ESIZE 0x00000004 >> +#define VIVS_FE_VERTEX_STREAMS__LEN 0x00000008 >> + >> +#define VIVS_FE_VERTEX_STREAMS_BASE_ADDR(i0) (0x00000680 + 0x4*(i0)) >> + >> +#define VIVS_FE_VERTEX_STREAMS_CONTROL(i0) (0x000006a0 + 0x4*(i0)) >> + >> +#define VIVS_FE_UNK00700(i0) (0x00000700 + 0x4*(i0)) >> +#define VIVS_FE_UNK00700__ESIZE 0x00000004 >> +#define VIVS_FE_UNK00700__LEN 0x00000010 >> + >> +#define VIVS_FE_UNK00740(i0) (0x00000740 + 0x4*(i0)) >> +#define VIVS_FE_UNK00740__ESIZE 0x00000004 >> +#define VIVS_FE_UNK00740__LEN 0x00000010 >> + >> +#define VIVS_FE_UNK00780(i0) (0x00000780 + 0x4*(i0)) >> +#define VIVS_FE_UNK00780__ESIZE 0x00000004 >> +#define VIVS_FE_UNK00780__LEN 0x00000010 >> + >> +#define VIVS_GL 0x00000000 >> + >> +#define VIVS_GL_PIPE_SELECT 0x00003800 >> +#define VIVS_GL_PIPE_SELECT_PIPE__MASK 0x00000001 >> +#define VIVS_GL_PIPE_SELECT_PIPE__SHIFT 0 >> +#define VIVS_GL_PIPE_SELECT_PIPE(x) (((x) << VIVS_GL_PIPE_SELECT_PIPE__SHIFT) & VIVS_GL_PIPE_SELECT_PIPE__MASK) >> + >> +#define VIVS_GL_EVENT 0x00003804 >> +#define VIVS_GL_EVENT_EVENT_ID__MASK 0x0000001f >> +#define VIVS_GL_EVENT_EVENT_ID__SHIFT 0 >> +#define VIVS_GL_EVENT_EVENT_ID(x) (((x) << VIVS_GL_EVENT_EVENT_ID__SHIFT) & VIVS_GL_EVENT_EVENT_ID__MASK) >> +#define VIVS_GL_EVENT_FROM_FE 0x00000020 >> +#define VIVS_GL_EVENT_FROM_PE 0x00000040 >> +#define VIVS_GL_EVENT_SOURCE__MASK 0x00001f00 >> +#define VIVS_GL_EVENT_SOURCE__SHIFT 8 >> +#define VIVS_GL_EVENT_SOURCE(x) (((x) << VIVS_GL_EVENT_SOURCE__SHIFT) & VIVS_GL_EVENT_SOURCE__MASK) >> + >> +#define VIVS_GL_SEMAPHORE_TOKEN 0x00003808 >> +#define VIVS_GL_SEMAPHORE_TOKEN_FROM__MASK 0x0000001f >> +#define VIVS_GL_SEMAPHORE_TOKEN_FROM__SHIFT 0 >> +#define VIVS_GL_SEMAPHORE_TOKEN_FROM(x) (((x) << VIVS_GL_SEMAPHORE_TOKEN_FROM__SHIFT) & VIVS_GL_SEMAPHORE_TOKEN_FROM__MASK) >> +#define VIVS_GL_SEMAPHORE_TOKEN_TO__MASK 0x00001f00 >> +#define VIVS_GL_SEMAPHORE_TOKEN_TO__SHIFT 8 >> +#define VIVS_GL_SEMAPHORE_TOKEN_TO(x) (((x) << VIVS_GL_SEMAPHORE_TOKEN_TO__SHIFT) & VIVS_GL_SEMAPHORE_TOKEN_TO__MASK) >> + >> +#define VIVS_GL_FLUSH_CACHE 0x0000380c >> +#define VIVS_GL_FLUSH_CACHE_DEPTH 0x00000001 >> +#define VIVS_GL_FLUSH_CACHE_COLOR 0x00000002 >> +#define VIVS_GL_FLUSH_CACHE_TEXTURE 0x00000004 >> +#define VIVS_GL_FLUSH_CACHE_PE2D 0x00000008 >> +#define VIVS_GL_FLUSH_CACHE_TEXTUREVS 0x00000010 >> +#define VIVS_GL_FLUSH_CACHE_SHADER_L1 0x00000020 >> +#define VIVS_GL_FLUSH_CACHE_SHADER_L2 0x00000040 >> + >> +#define VIVS_GL_FLUSH_MMU 0x00003810 >> +#define VIVS_GL_FLUSH_MMU_FLUSH_FEMMU 0x00000001 >> +#define VIVS_GL_FLUSH_MMU_FLUSH_PEMMU 0x00000002 >> + >> +#define VIVS_GL_VERTEX_ELEMENT_CONFIG 0x00003814 >> + >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG 0x00003818 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_SAMPLES__MASK 0x00000003 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_SAMPLES__SHIFT 0 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_SAMPLES_NONE 0x00000000 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_SAMPLES_2X 0x00000001 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_SAMPLES_4X 0x00000002 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_SAMPLES_MASK 0x00000008 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_ENABLES__MASK 0x000000f0 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_ENABLES__SHIFT 4 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_ENABLES(x) (((x) << VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_ENABLES__SHIFT) & VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_ENABLES__MASK) >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_MSAA_ENABLES_MASK 0x00000100 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_UNK12__MASK 0x00007000 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_UNK12__SHIFT 12 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_UNK12(x) (((x) << VIVS_GL_MULTI_SAMPLE_CONFIG_UNK12__SHIFT) & VIVS_GL_MULTI_SAMPLE_CONFIG_UNK12__MASK) >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_UNK12_MASK 0x00008000 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_UNK16__MASK 0x00030000 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_UNK16__SHIFT 16 >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_UNK16(x) (((x) << VIVS_GL_MULTI_SAMPLE_CONFIG_UNK16__SHIFT) & VIVS_GL_MULTI_SAMPLE_CONFIG_UNK16__MASK) >> +#define VIVS_GL_MULTI_SAMPLE_CONFIG_UNK16_MASK 0x00080000 >> + >> +#define VIVS_GL_VARYING_TOTAL_COMPONENTS 0x0000381c >> +#define VIVS_GL_VARYING_TOTAL_COMPONENTS_NUM__MASK 0x000000ff >> +#define VIVS_GL_VARYING_TOTAL_COMPONENTS_NUM__SHIFT 0 >> +#define VIVS_GL_VARYING_TOTAL_COMPONENTS_NUM(x) (((x) << VIVS_GL_VARYING_TOTAL_COMPONENTS_NUM__SHIFT) & VIVS_GL_VARYING_TOTAL_COMPONENTS_NUM__MASK) >> + >> +#define VIVS_GL_VARYING_NUM_COMPONENTS 0x00003820 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR0__MASK 0x00000007 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR0__SHIFT 0 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR0(x) (((x) << VIVS_GL_VARYING_NUM_COMPONENTS_VAR0__SHIFT) & VIVS_GL_VARYING_NUM_COMPONENTS_VAR0__MASK) >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR1__MASK 0x00000070 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR1__SHIFT 4 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR1(x) (((x) << VIVS_GL_VARYING_NUM_COMPONENTS_VAR1__SHIFT) & VIVS_GL_VARYING_NUM_COMPONENTS_VAR1__MASK) >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR2__MASK 0x00000700 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR2__SHIFT 8 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR2(x) (((x) << VIVS_GL_VARYING_NUM_COMPONENTS_VAR2__SHIFT) & VIVS_GL_VARYING_NUM_COMPONENTS_VAR2__MASK) >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR3__MASK 0x00007000 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR3__SHIFT 12 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR3(x) (((x) << VIVS_GL_VARYING_NUM_COMPONENTS_VAR3__SHIFT) & VIVS_GL_VARYING_NUM_COMPONENTS_VAR3__MASK) >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR4__MASK 0x00070000 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR4__SHIFT 16 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR4(x) (((x) << VIVS_GL_VARYING_NUM_COMPONENTS_VAR4__SHIFT) & VIVS_GL_VARYING_NUM_COMPONENTS_VAR4__MASK) >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR5__MASK 0x00700000 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR5__SHIFT 20 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR5(x) (((x) << VIVS_GL_VARYING_NUM_COMPONENTS_VAR5__SHIFT) & VIVS_GL_VARYING_NUM_COMPONENTS_VAR5__MASK) >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR6__MASK 0x07000000 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR6__SHIFT 24 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR6(x) (((x) << VIVS_GL_VARYING_NUM_COMPONENTS_VAR6__SHIFT) & VIVS_GL_VARYING_NUM_COMPONENTS_VAR6__MASK) >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR7__MASK 0x70000000 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR7__SHIFT 28 >> +#define VIVS_GL_VARYING_NUM_COMPONENTS_VAR7(x) (((x) << VIVS_GL_VARYING_NUM_COMPONENTS_VAR7__SHIFT) & VIVS_GL_VARYING_NUM_COMPONENTS_VAR7__MASK) >> + >> +#define VIVS_GL_VARYING_COMPONENT_USE(i0) (0x00003828 + 0x4*(i0)) >> +#define VIVS_GL_VARYING_COMPONENT_USE__ESIZE 0x00000004 >> +#define VIVS_GL_VARYING_COMPONENT_USE__LEN 0x00000002 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP0__MASK 0x00000003 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP0__SHIFT 0 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP0(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP0__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP0__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP1__MASK 0x0000000c >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP1__SHIFT 2 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP1(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP1__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP1__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP2__MASK 0x00000030 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP2__SHIFT 4 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP2(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP2__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP2__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP3__MASK 0x000000c0 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP3__SHIFT 6 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP3(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP3__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP3__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP4__MASK 0x00000300 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP4__SHIFT 8 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP4(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP4__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP4__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP5__MASK 0x00000c00 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP5__SHIFT 10 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP5(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP5__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP5__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP6__MASK 0x00003000 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP6__SHIFT 12 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP6(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP6__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP6__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP7__MASK 0x0000c000 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP7__SHIFT 14 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP7(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP7__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP7__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP8__MASK 0x00030000 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP8__SHIFT 16 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP8(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP8__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP8__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP9__MASK 0x000c0000 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP9__SHIFT 18 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP9(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP9__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP9__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP10__MASK 0x00300000 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP10__SHIFT 20 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP10(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP10__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP10__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP11__MASK 0x00c00000 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP11__SHIFT 22 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP11(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP11__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP11__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP12__MASK 0x03000000 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP12__SHIFT 24 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP12(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP12__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP12__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP13__MASK 0x0c000000 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP13__SHIFT 26 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP13(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP13__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP13__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP14__MASK 0x30000000 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP14__SHIFT 28 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP14(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP14__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP14__MASK) >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP15__MASK 0xc0000000 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP15__SHIFT 30 >> +#define VIVS_GL_VARYING_COMPONENT_USE_COMP15(x) (((x) << VIVS_GL_VARYING_COMPONENT_USE_COMP15__SHIFT) & VIVS_GL_VARYING_COMPONENT_USE_COMP15__MASK) >> + >> +#define VIVS_GL_UNK03834 0x00003834 >> + >> +#define VIVS_GL_UNK03838 0x00003838 >> + >> +#define VIVS_GL_API_MODE 0x0000384c >> +#define VIVS_GL_API_MODE_OPENGL 0x00000000 >> +#define VIVS_GL_API_MODE_OPENVG 0x00000001 >> +#define VIVS_GL_API_MODE_OPENCL 0x00000002 >> + >> +#define VIVS_GL_CONTEXT_POINTER 0x00003850 >> + >> +#define VIVS_GL_UNK03A00 0x00003a00 >> + >> +#define VIVS_GL_STALL_TOKEN 0x00003c00 >> +#define VIVS_GL_STALL_TOKEN_FROM__MASK 0x0000001f >> +#define VIVS_GL_STALL_TOKEN_FROM__SHIFT 0 >> +#define VIVS_GL_STALL_TOKEN_FROM(x) (((x) << VIVS_GL_STALL_TOKEN_FROM__SHIFT) & VIVS_GL_STALL_TOKEN_FROM__MASK) >> +#define VIVS_GL_STALL_TOKEN_TO__MASK 0x00001f00 >> +#define VIVS_GL_STALL_TOKEN_TO__SHIFT 8 >> +#define VIVS_GL_STALL_TOKEN_TO(x) (((x) << VIVS_GL_STALL_TOKEN_TO__SHIFT) & VIVS_GL_STALL_TOKEN_TO__MASK) >> +#define VIVS_GL_STALL_TOKEN_FLIP0 0x40000000 >> +#define VIVS_GL_STALL_TOKEN_FLIP1 0x80000000 >> + >> +#define VIVS_DUMMY 0x00000000 >> + >> +#define VIVS_DUMMY_DUMMY 0x0003fffc >> + >> + >> +#endif /* STATE_XML */ >> diff --git a/tests/etnaviv/state_2d.xml.h b/tests/etnaviv/state_2d.xml.h >> new file mode 100644 >> index 0000000..fb22cfa >> --- /dev/null >> +++ b/tests/etnaviv/state_2d.xml.h >> @@ -0,0 +1,1473 @@ >> +#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: >> +- /home/orion/projects/etna_viv/rnndb/state.xml ( 18526 bytes, from 2013-09-11 16:52:32) >> +- /home/orion/projects/etna_viv/rnndb/common.xml ( 18379 bytes, from 2014-01-27 15:58:05) >> +- /home/orion/projects/etna_viv/rnndb/state_hi.xml ( 22236 bytes, from 2014-01-27 15:56:46) >> +- /home/orion/projects/etna_viv/rnndb/state_2d.xml ( 51191 bytes, from 2013-10-04 06:36:55) >> +- /home/orion/projects/etna_viv/rnndb/state_3d.xml ( 54570 bytes, from 2013-10-12 15:25:03) >> +- /home/orion/projects/etna_viv/rnndb/state_vg.xml ( 5942 bytes, from 2013-09-01 10:53:22) >> + >> +Copyright (C) 2013 >> +*/ >> + >> + >> +#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/tests/etnaviv/write_bmp.c b/tests/etnaviv/write_bmp.c >> new file mode 100644 >> index 0000000..40de84e >> --- /dev/null >> +++ b/tests/etnaviv/write_bmp.c >> @@ -0,0 +1,152 @@ >> +/* >> + * Copyright 2011 Luc Verhaegen <libv@xxxxxxxxxxxxxxx> >> + * >> + * 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. >> + * >> + */ >> +/* >> + * Quick 'n Dirty bitmap dumper. >> + */ >> +#include <stdio.h> >> +#include <unistd.h> >> +#include <sys/types.h> >> +#include <sys/stat.h> >> +#include <fcntl.h> >> +#include <string.h> >> +#include <errno.h> >> + >> +#include "write_bmp.h" >> + >> +#define FILENAME_SIZE 1024 >> + >> +struct bmp_header { >> + unsigned short magic; >> + unsigned int size; >> + unsigned int unused; >> + unsigned int start; >> +} __attribute__((__packed__)); >> + >> +struct dib_header { >> + unsigned int size; >> + unsigned int width; >> + unsigned int height; >> + unsigned short planes; >> + unsigned short bpp; >> + unsigned int compression; >> + unsigned int data_size; >> + unsigned int h_res; >> + unsigned int v_res; >> + unsigned int colours; >> + unsigned int important_colours; >> + unsigned int red_mask; >> + unsigned int green_mask; >> + unsigned int blue_mask; >> + unsigned int alpha_mask; >> + unsigned int colour_space; >> + unsigned int unused[12]; >> +} __attribute__((__packed__)); >> + >> +static int >> +bmp_header_write(int fd, int width, int height, int bgra, int noflip, int alpha) >> +{ >> + struct bmp_header bmp_header = { >> + .magic = 0x4d42, >> + .size = (width * height * 4) + >> + sizeof(struct bmp_header) + sizeof(struct dib_header), >> + .start = sizeof(struct bmp_header) + sizeof(struct dib_header), >> + }; >> + struct dib_header dib_header = { >> + .size = sizeof(struct dib_header), >> + .width = width, >> + .height = noflip ? -height : height, >> + .planes = 1, >> + .bpp = 32, >> + .compression = 3, >> + .data_size = 4 * width * height, >> + .h_res = 0xB13, >> + .v_res = 0xB13, >> + .colours = 0, >> + .important_colours = 0, >> + .red_mask = 0x000000FF, >> + .green_mask = 0x0000FF00, >> + .blue_mask = 0x00FF0000, >> + .alpha_mask = alpha ? 0xFF000000 : 0x00000000, >> + .colour_space = 0x57696E20, >> + }; >> + >> + if (bgra) { >> + dib_header.red_mask = 0x00FF0000; >> + dib_header.blue_mask = 0x000000FF; >> + } >> + >> + write(fd, &bmp_header, sizeof(struct bmp_header)); >> + write(fd, &dib_header, sizeof(struct dib_header)); >> + >> + return 0; >> +} >> + >> +void >> +bmp_dump32(char *buffer, unsigned width, unsigned height, bool bgra, const char *filename) >> +{ >> + int fd; >> + >> + fd = open(filename, O_WRONLY| O_TRUNC | O_CREAT, 0666); >> + if (fd == -1) { >> + printf("Failed to open %s: %s\n", filename, strerror(errno)); >> + return; >> + } >> + >> + bmp_header_write(fd, width, height, bgra, false, true); >> + >> + write(fd, buffer, width * height * 4); >> +} >> + >> +void >> +bmp_dump32_noflip(char *buffer, unsigned width, unsigned height, bool bgra, const char *filename) >> +{ >> + int fd; >> + >> + fd = open(filename, O_WRONLY| O_TRUNC | O_CREAT, 0666); >> + if (fd == -1) { >> + printf("Failed to open %s: %s\n", filename, strerror(errno)); >> + return; >> + } >> + >> + bmp_header_write(fd, width, height, bgra, true, true); >> + >> + write(fd, buffer, width * height * 4); >> +} >> + >> +void >> +bmp_dump32_ex(char *buffer, unsigned width, unsigned height, bool flip, bool bgra, bool alpha, const char *filename) >> +{ >> + int fd; >> + >> + fd = open(filename, O_WRONLY| O_TRUNC | O_CREAT, 0666); >> + if (fd == -1) { >> + printf("Failed to open %s: %s\n", filename, strerror(errno)); >> + return; >> + } >> + >> + bmp_header_write(fd, width, height, bgra, flip, alpha); >> + >> + write(fd, buffer, width * height * 4); >> +} >> + >> diff --git a/tests/etnaviv/write_bmp.h b/tests/etnaviv/write_bmp.h >> new file mode 100644 >> index 0000000..667fa87 >> --- /dev/null >> +++ b/tests/etnaviv/write_bmp.h >> @@ -0,0 +1,34 @@ >> +/* >> + * Copyright 2011 Luc Verhaegen <libv@xxxxxxxxxxxxxxx> >> + * >> + * 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. >> + * >> + */ >> +#ifndef BMP_DUMP_H >> +#define BMP_DUMP_H 1 >> +#include <stdbool.h> >> +/* write 32-bit image (y axis upwards) */ >> +void bmp_dump32(char *buffer, unsigned width, unsigned height, bool bgra, const char *filename); >> +/* write 32-bit image (y axis downwards) */ >> +void bmp_dump32_noflip(char *buffer, unsigned width, unsigned height, bool bgra, const char *filename); >> +/* write 32-bit image */ >> +void bmp_dump32_ex(char *buffer, unsigned width, unsigned height, bool flip, bool bgra, bool alpha, const char *filename); >> + >> +#endif /* BMP_DUMP_H */ >> -- >> 2.7.4 >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel@xxxxxxxxxxxxxxxxxxxxx >> https://lists.freedesktop.org/mailman/listinfo/dri-devel > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel