| /* Generated code, see v3d_packet_v21.xml, v3d_packet_v33.xml and gen_pack_header.py */ |
| |
| |
| /* Packets, enums and structures for V3D 2.1. |
| * |
| * This file has been generated, do not hand edit. |
| */ |
| |
| #ifndef V3D21_PACK_H |
| #define V3D21_PACK_H |
| |
| #include "cle/v3d_packet_helpers.h" |
| |
| |
| enum V3D21_Compare_Function { |
| V3D_COMPARE_FUNC_NEVER = 0, |
| V3D_COMPARE_FUNC_LESS = 1, |
| V3D_COMPARE_FUNC_EQUAL = 2, |
| V3D_COMPARE_FUNC_LEQUAL = 3, |
| V3D_COMPARE_FUNC_GREATER = 4, |
| V3D_COMPARE_FUNC_NOTEQUAL = 5, |
| V3D_COMPARE_FUNC_GEQUAL = 6, |
| V3D_COMPARE_FUNC_ALWAYS = 7, |
| }; |
| |
| enum V3D21_Primitive { |
| V3D_PRIM_POINTS = 0, |
| V3D_PRIM_LINES = 1, |
| V3D_PRIM_LINE_LOOP = 2, |
| V3D_PRIM_LINE_STRIP = 3, |
| V3D_PRIM_TRIANGLES = 4, |
| V3D_PRIM_TRIANGLE_STRIP = 5, |
| V3D_PRIM_TRIANGLE_FAN = 6, |
| }; |
| |
| #define V3D21_HALT_opcode 0 |
| #define V3D21_HALT_header \ |
| .opcode = 0 |
| |
| struct V3D21_HALT { |
| uint32_t opcode; |
| }; |
| |
| static inline void |
| V3D21_HALT_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_HALT * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| } |
| |
| #define V3D21_HALT_length 1 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_HALT_unpack(const uint8_t * restrict cl, |
| struct V3D21_HALT * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| } |
| #endif |
| |
| |
| #define V3D21_NOP_opcode 1 |
| #define V3D21_NOP_header \ |
| .opcode = 1 |
| |
| struct V3D21_NOP { |
| uint32_t opcode; |
| }; |
| |
| static inline void |
| V3D21_NOP_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_NOP * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| } |
| |
| #define V3D21_NOP_length 1 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_NOP_unpack(const uint8_t * restrict cl, |
| struct V3D21_NOP * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| } |
| #endif |
| |
| |
| #define V3D21_FLUSH_opcode 4 |
| #define V3D21_FLUSH_header \ |
| .opcode = 4 |
| |
| struct V3D21_FLUSH { |
| uint32_t opcode; |
| }; |
| |
| static inline void |
| V3D21_FLUSH_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_FLUSH * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| } |
| |
| #define V3D21_FLUSH_length 1 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_FLUSH_unpack(const uint8_t * restrict cl, |
| struct V3D21_FLUSH * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| } |
| #endif |
| |
| |
| #define V3D21_FLUSH_ALL_STATE_opcode 5 |
| #define V3D21_FLUSH_ALL_STATE_header \ |
| .opcode = 5 |
| |
| struct V3D21_FLUSH_ALL_STATE { |
| uint32_t opcode; |
| }; |
| |
| static inline void |
| V3D21_FLUSH_ALL_STATE_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_FLUSH_ALL_STATE * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| } |
| |
| #define V3D21_FLUSH_ALL_STATE_length 1 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_FLUSH_ALL_STATE_unpack(const uint8_t * restrict cl, |
| struct V3D21_FLUSH_ALL_STATE * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| } |
| #endif |
| |
| |
| #define V3D21_START_TILE_BINNING_opcode 6 |
| #define V3D21_START_TILE_BINNING_header \ |
| .opcode = 6 |
| |
| struct V3D21_START_TILE_BINNING { |
| uint32_t opcode; |
| }; |
| |
| static inline void |
| V3D21_START_TILE_BINNING_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_START_TILE_BINNING * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| } |
| |
| #define V3D21_START_TILE_BINNING_length 1 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_START_TILE_BINNING_unpack(const uint8_t * restrict cl, |
| struct V3D21_START_TILE_BINNING * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| } |
| #endif |
| |
| |
| #define V3D21_INCREMENT_SEMAPHORE_opcode 7 |
| #define V3D21_INCREMENT_SEMAPHORE_header \ |
| .opcode = 7 |
| |
| struct V3D21_INCREMENT_SEMAPHORE { |
| uint32_t opcode; |
| }; |
| |
| static inline void |
| V3D21_INCREMENT_SEMAPHORE_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_INCREMENT_SEMAPHORE * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| } |
| |
| #define V3D21_INCREMENT_SEMAPHORE_length 1 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_INCREMENT_SEMAPHORE_unpack(const uint8_t * restrict cl, |
| struct V3D21_INCREMENT_SEMAPHORE * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| } |
| #endif |
| |
| |
| #define V3D21_WAIT_ON_SEMAPHORE_opcode 8 |
| #define V3D21_WAIT_ON_SEMAPHORE_header \ |
| .opcode = 8 |
| |
| struct V3D21_WAIT_ON_SEMAPHORE { |
| uint32_t opcode; |
| }; |
| |
| static inline void |
| V3D21_WAIT_ON_SEMAPHORE_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_WAIT_ON_SEMAPHORE * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| } |
| |
| #define V3D21_WAIT_ON_SEMAPHORE_length 1 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_WAIT_ON_SEMAPHORE_unpack(const uint8_t * restrict cl, |
| struct V3D21_WAIT_ON_SEMAPHORE * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| } |
| #endif |
| |
| |
| #define V3D21_BRANCH_opcode 16 |
| #define V3D21_BRANCH_header \ |
| .opcode = 16 |
| |
| struct V3D21_BRANCH { |
| uint32_t opcode; |
| __gen_address_type address; |
| }; |
| |
| static inline void |
| V3D21_BRANCH_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_BRANCH * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| __gen_emit_reloc(data, &values->address); |
| cl[ 1] = __gen_address_offset(&values->address); |
| |
| cl[ 2] = __gen_address_offset(&values->address) >> 8; |
| |
| cl[ 3] = __gen_address_offset(&values->address) >> 16; |
| |
| cl[ 4] = __gen_address_offset(&values->address) >> 24; |
| |
| } |
| |
| #define V3D21_BRANCH_length 5 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_BRANCH_unpack(const uint8_t * restrict cl, |
| struct V3D21_BRANCH * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->address = __gen_unpack_address(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_BRANCH_TO_SUB_LIST_opcode 17 |
| #define V3D21_BRANCH_TO_SUB_LIST_header \ |
| .opcode = 17 |
| |
| struct V3D21_BRANCH_TO_SUB_LIST { |
| uint32_t opcode; |
| __gen_address_type address; |
| }; |
| |
| static inline void |
| V3D21_BRANCH_TO_SUB_LIST_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_BRANCH_TO_SUB_LIST * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| __gen_emit_reloc(data, &values->address); |
| cl[ 1] = __gen_address_offset(&values->address); |
| |
| cl[ 2] = __gen_address_offset(&values->address) >> 8; |
| |
| cl[ 3] = __gen_address_offset(&values->address) >> 16; |
| |
| cl[ 4] = __gen_address_offset(&values->address) >> 24; |
| |
| } |
| |
| #define V3D21_BRANCH_TO_SUB_LIST_length 5 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_BRANCH_TO_SUB_LIST_unpack(const uint8_t * restrict cl, |
| struct V3D21_BRANCH_TO_SUB_LIST * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->address = __gen_unpack_address(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_RETURN_FROM_SUB_LIST_opcode 18 |
| #define V3D21_RETURN_FROM_SUB_LIST_header \ |
| .opcode = 18 |
| |
| struct V3D21_RETURN_FROM_SUB_LIST { |
| uint32_t opcode; |
| }; |
| |
| static inline void |
| V3D21_RETURN_FROM_SUB_LIST_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_RETURN_FROM_SUB_LIST * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| } |
| |
| #define V3D21_RETURN_FROM_SUB_LIST_length 1 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_RETURN_FROM_SUB_LIST_unpack(const uint8_t * restrict cl, |
| struct V3D21_RETURN_FROM_SUB_LIST * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| } |
| #endif |
| |
| |
| #define V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_opcode 24 |
| #define V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_header\ |
| .opcode = 24 |
| |
| struct V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER { |
| uint32_t opcode; |
| }; |
| |
| static inline void |
| V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| } |
| |
| #define V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_length 1 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_unpack(const uint8_t * restrict cl, |
| struct V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| } |
| #endif |
| |
| |
| #define V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_AND_EOF_opcode 25 |
| #define V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_AND_EOF_header\ |
| .opcode = 25 |
| |
| struct V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_AND_EOF { |
| uint32_t opcode; |
| }; |
| |
| static inline void |
| V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_AND_EOF_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_AND_EOF * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| } |
| |
| #define V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_AND_EOF_length 1 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_AND_EOF_unpack(const uint8_t * restrict cl, |
| struct V3D21_STORE_MULTI_SAMPLE_RESOLVED_TILE_COLOR_BUFFER_AND_EOF * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| } |
| #endif |
| |
| |
| #define V3D21_STORE_FULL_RESOLUTION_TILE_BUFFER_opcode 26 |
| #define V3D21_STORE_FULL_RESOLUTION_TILE_BUFFER_header\ |
| .opcode = 26 |
| |
| struct V3D21_STORE_FULL_RESOLUTION_TILE_BUFFER { |
| uint32_t opcode; |
| __gen_address_type address; |
| bool last_tile; |
| bool disable_clear_on_write; |
| bool disable_z_stencil_buffer_write; |
| bool disable_color_buffer_write; |
| }; |
| |
| static inline void |
| V3D21_STORE_FULL_RESOLUTION_TILE_BUFFER_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_STORE_FULL_RESOLUTION_TILE_BUFFER * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| __gen_emit_reloc(data, &values->address); |
| cl[ 1] = __gen_address_offset(&values->address) | |
| __gen_uint(values->last_tile, 3, 3) | |
| __gen_uint(values->disable_clear_on_write, 2, 2) | |
| __gen_uint(values->disable_z_stencil_buffer_write, 1, 1) | |
| __gen_uint(values->disable_color_buffer_write, 0, 0); |
| |
| cl[ 2] = __gen_address_offset(&values->address) >> 8; |
| |
| cl[ 3] = __gen_address_offset(&values->address) >> 16; |
| |
| cl[ 4] = __gen_address_offset(&values->address) >> 24; |
| |
| } |
| |
| #define V3D21_STORE_FULL_RESOLUTION_TILE_BUFFER_length 5 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_STORE_FULL_RESOLUTION_TILE_BUFFER_unpack(const uint8_t * restrict cl, |
| struct V3D21_STORE_FULL_RESOLUTION_TILE_BUFFER * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->address = __gen_unpack_address(cl, 12, 39); |
| values->last_tile = __gen_unpack_uint(cl, 11, 11); |
| values->disable_clear_on_write = __gen_unpack_uint(cl, 10, 10); |
| values->disable_z_stencil_buffer_write = __gen_unpack_uint(cl, 9, 9); |
| values->disable_color_buffer_write = __gen_unpack_uint(cl, 8, 8); |
| } |
| #endif |
| |
| |
| #define V3D21_RE_LOAD_FULL_RESOLUTION_TILE_BUFFER_opcode 27 |
| #define V3D21_RE_LOAD_FULL_RESOLUTION_TILE_BUFFER_header\ |
| .opcode = 27 |
| |
| struct V3D21_RE_LOAD_FULL_RESOLUTION_TILE_BUFFER { |
| uint32_t opcode; |
| __gen_address_type address; |
| bool disable_z_stencil_buffer_read; |
| bool disable_color_buffer_read; |
| }; |
| |
| static inline void |
| V3D21_RE_LOAD_FULL_RESOLUTION_TILE_BUFFER_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_RE_LOAD_FULL_RESOLUTION_TILE_BUFFER * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| __gen_emit_reloc(data, &values->address); |
| cl[ 1] = __gen_address_offset(&values->address) | |
| __gen_uint(values->disable_z_stencil_buffer_read, 1, 1) | |
| __gen_uint(values->disable_color_buffer_read, 0, 0); |
| |
| cl[ 2] = __gen_address_offset(&values->address) >> 8; |
| |
| cl[ 3] = __gen_address_offset(&values->address) >> 16; |
| |
| cl[ 4] = __gen_address_offset(&values->address) >> 24; |
| |
| } |
| |
| #define V3D21_RE_LOAD_FULL_RESOLUTION_TILE_BUFFER_length 5 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_RE_LOAD_FULL_RESOLUTION_TILE_BUFFER_unpack(const uint8_t * restrict cl, |
| struct V3D21_RE_LOAD_FULL_RESOLUTION_TILE_BUFFER * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->address = __gen_unpack_address(cl, 12, 39); |
| values->disable_z_stencil_buffer_read = __gen_unpack_uint(cl, 9, 9); |
| values->disable_color_buffer_read = __gen_unpack_uint(cl, 8, 8); |
| } |
| #endif |
| |
| |
| #define V3D21_STORE_TILE_BUFFER_GENERAL_opcode 28 |
| #define V3D21_STORE_TILE_BUFFER_GENERAL_header \ |
| .opcode = 28 |
| |
| struct V3D21_STORE_TILE_BUFFER_GENERAL { |
| uint32_t opcode; |
| __gen_address_type memory_base_address_of_frame_tile_dump_buffer; |
| bool last_tile_of_frame; |
| bool disable_vg_mask_buffer_dump; |
| bool disable_z_stencil_buffer_dump; |
| bool disable_color_buffer_dump; |
| bool disable_vg_mask_buffer_clear_on_store_dump; |
| bool disable_z_stencil_buffer_clear_on_store_dump; |
| bool disable_color_buffer_clear_on_store_dump; |
| uint32_t pixel_color_format; |
| #define RGBA8888 0 |
| #define BGR565_DITHERED 1 |
| #define BGR565_NO_DITHER 2 |
| uint32_t mode; |
| #define SAMPLE_0 0 |
| #define DECIMATE_X4 1 |
| #define DECIMATE_X16 2 |
| uint32_t format; |
| #define RASTER 0 |
| #define T 1 |
| #define LT 2 |
| uint32_t buffer_to_store; |
| #define NONE 0 |
| #define COLOR 1 |
| #define Z_STENCIL 2 |
| #define Z 3 |
| #define VG_MASK 4 |
| }; |
| |
| static inline void |
| V3D21_STORE_TILE_BUFFER_GENERAL_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_STORE_TILE_BUFFER_GENERAL * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->mode, 6, 7) | |
| __gen_uint(values->format, 4, 5) | |
| __gen_uint(values->buffer_to_store, 0, 2); |
| |
| cl[ 2] = __gen_uint(values->disable_vg_mask_buffer_clear_on_store_dump, 7, 7) | |
| __gen_uint(values->disable_z_stencil_buffer_clear_on_store_dump, 6, 6) | |
| __gen_uint(values->disable_color_buffer_clear_on_store_dump, 5, 5) | |
| __gen_uint(values->pixel_color_format, 0, 1); |
| |
| __gen_emit_reloc(data, &values->memory_base_address_of_frame_tile_dump_buffer); |
| cl[ 3] = __gen_address_offset(&values->memory_base_address_of_frame_tile_dump_buffer) | |
| __gen_uint(values->last_tile_of_frame, 3, 3) | |
| __gen_uint(values->disable_vg_mask_buffer_dump, 2, 2) | |
| __gen_uint(values->disable_z_stencil_buffer_dump, 1, 1) | |
| __gen_uint(values->disable_color_buffer_dump, 0, 0); |
| |
| cl[ 4] = __gen_address_offset(&values->memory_base_address_of_frame_tile_dump_buffer) >> 8; |
| |
| cl[ 5] = __gen_address_offset(&values->memory_base_address_of_frame_tile_dump_buffer) >> 16; |
| |
| cl[ 6] = __gen_address_offset(&values->memory_base_address_of_frame_tile_dump_buffer) >> 24; |
| |
| } |
| |
| #define V3D21_STORE_TILE_BUFFER_GENERAL_length 7 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_STORE_TILE_BUFFER_GENERAL_unpack(const uint8_t * restrict cl, |
| struct V3D21_STORE_TILE_BUFFER_GENERAL * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->memory_base_address_of_frame_tile_dump_buffer = __gen_unpack_address(cl, 28, 55); |
| values->last_tile_of_frame = __gen_unpack_uint(cl, 27, 27); |
| values->disable_vg_mask_buffer_dump = __gen_unpack_uint(cl, 26, 26); |
| values->disable_z_stencil_buffer_dump = __gen_unpack_uint(cl, 25, 25); |
| values->disable_color_buffer_dump = __gen_unpack_uint(cl, 24, 24); |
| values->disable_vg_mask_buffer_clear_on_store_dump = __gen_unpack_uint(cl, 23, 23); |
| values->disable_z_stencil_buffer_clear_on_store_dump = __gen_unpack_uint(cl, 22, 22); |
| values->disable_color_buffer_clear_on_store_dump = __gen_unpack_uint(cl, 21, 21); |
| values->pixel_color_format = __gen_unpack_uint(cl, 16, 17); |
| values->mode = __gen_unpack_uint(cl, 14, 15); |
| values->format = __gen_unpack_uint(cl, 12, 13); |
| values->buffer_to_store = __gen_unpack_uint(cl, 8, 10); |
| } |
| #endif |
| |
| |
| #define V3D21_LOAD_TILE_BUFFER_GENERAL_opcode 29 |
| #define V3D21_LOAD_TILE_BUFFER_GENERAL_header \ |
| .opcode = 29 |
| |
| struct V3D21_LOAD_TILE_BUFFER_GENERAL { |
| uint32_t opcode; |
| __gen_address_type memory_base_address_of_frame_tile_dump_buffer; |
| bool disable_vg_mask_buffer_load; |
| bool disable_z_stencil_buffer_load; |
| bool disable_color_buffer_load; |
| uint32_t pixel_color_format; |
| #define RGBA8888 0 |
| #define BGR565_DITHERED 1 |
| #define BGR565_NO_DITHER 2 |
| uint32_t mode; |
| #define SAMPLE_0 0 |
| #define DECIMATE_X4 1 |
| #define DECIMATE_X16 2 |
| uint32_t format; |
| #define RASTER 0 |
| #define T 1 |
| #define LT 2 |
| uint32_t buffer_to_store; |
| #define NONE 0 |
| #define COLOR 1 |
| #define Z_STENCIL 2 |
| #define Z 3 |
| #define VG_MASK 4 |
| }; |
| |
| static inline void |
| V3D21_LOAD_TILE_BUFFER_GENERAL_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_LOAD_TILE_BUFFER_GENERAL * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->mode, 6, 7) | |
| __gen_uint(values->format, 4, 5) | |
| __gen_uint(values->buffer_to_store, 0, 2); |
| |
| cl[ 2] = __gen_uint(values->pixel_color_format, 0, 1); |
| |
| __gen_emit_reloc(data, &values->memory_base_address_of_frame_tile_dump_buffer); |
| cl[ 3] = __gen_address_offset(&values->memory_base_address_of_frame_tile_dump_buffer) | |
| __gen_uint(values->disable_vg_mask_buffer_load, 2, 2) | |
| __gen_uint(values->disable_z_stencil_buffer_load, 1, 1) | |
| __gen_uint(values->disable_color_buffer_load, 0, 0); |
| |
| cl[ 4] = __gen_address_offset(&values->memory_base_address_of_frame_tile_dump_buffer) >> 8; |
| |
| cl[ 5] = __gen_address_offset(&values->memory_base_address_of_frame_tile_dump_buffer) >> 16; |
| |
| cl[ 6] = __gen_address_offset(&values->memory_base_address_of_frame_tile_dump_buffer) >> 24; |
| |
| } |
| |
| #define V3D21_LOAD_TILE_BUFFER_GENERAL_length 7 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_LOAD_TILE_BUFFER_GENERAL_unpack(const uint8_t * restrict cl, |
| struct V3D21_LOAD_TILE_BUFFER_GENERAL * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->memory_base_address_of_frame_tile_dump_buffer = __gen_unpack_address(cl, 28, 55); |
| values->disable_vg_mask_buffer_load = __gen_unpack_uint(cl, 26, 26); |
| values->disable_z_stencil_buffer_load = __gen_unpack_uint(cl, 25, 25); |
| values->disable_color_buffer_load = __gen_unpack_uint(cl, 24, 24); |
| values->pixel_color_format = __gen_unpack_uint(cl, 16, 17); |
| values->mode = __gen_unpack_uint(cl, 14, 15); |
| values->format = __gen_unpack_uint(cl, 12, 13); |
| values->buffer_to_store = __gen_unpack_uint(cl, 8, 10); |
| } |
| #endif |
| |
| |
| #define V3D21_INDEXED_PRIMITIVE_LIST_opcode 32 |
| #define V3D21_INDEXED_PRIMITIVE_LIST_header \ |
| .opcode = 32 |
| |
| struct V3D21_INDEXED_PRIMITIVE_LIST { |
| uint32_t opcode; |
| uint32_t maximum_index; |
| uint32_t address_of_indices_list; |
| uint32_t length; |
| uint32_t index_type; |
| #define _8_BIT 0 |
| #define _16_BIT 1 |
| enum V3D21_Primitive primitive_mode; |
| }; |
| |
| static inline void |
| V3D21_INDEXED_PRIMITIVE_LIST_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_INDEXED_PRIMITIVE_LIST * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->index_type, 4, 7) | |
| __gen_uint(values->primitive_mode, 0, 3); |
| |
| |
| memcpy(&cl[2], &values->length, sizeof(values->length)); |
| |
| memcpy(&cl[6], &values->address_of_indices_list, sizeof(values->address_of_indices_list)); |
| |
| memcpy(&cl[10], &values->maximum_index, sizeof(values->maximum_index)); |
| } |
| |
| #define V3D21_INDEXED_PRIMITIVE_LIST_length 14 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_INDEXED_PRIMITIVE_LIST_unpack(const uint8_t * restrict cl, |
| struct V3D21_INDEXED_PRIMITIVE_LIST * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->maximum_index = __gen_unpack_uint(cl, 80, 111); |
| values->address_of_indices_list = __gen_unpack_uint(cl, 48, 79); |
| values->length = __gen_unpack_uint(cl, 16, 47); |
| values->index_type = __gen_unpack_uint(cl, 12, 15); |
| values->primitive_mode = __gen_unpack_uint(cl, 8, 11); |
| } |
| #endif |
| |
| |
| #define V3D21_VERTEX_ARRAY_PRIMITIVES_opcode 33 |
| #define V3D21_VERTEX_ARRAY_PRIMITIVES_header \ |
| .opcode = 33 |
| |
| struct V3D21_VERTEX_ARRAY_PRIMITIVES { |
| uint32_t opcode; |
| uint32_t index_of_first_vertex; |
| uint32_t length; |
| enum V3D21_Primitive primitive_mode; |
| }; |
| |
| static inline void |
| V3D21_VERTEX_ARRAY_PRIMITIVES_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_VERTEX_ARRAY_PRIMITIVES * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->primitive_mode, 0, 3); |
| |
| |
| memcpy(&cl[2], &values->length, sizeof(values->length)); |
| |
| memcpy(&cl[6], &values->index_of_first_vertex, sizeof(values->index_of_first_vertex)); |
| } |
| |
| #define V3D21_VERTEX_ARRAY_PRIMITIVES_length 10 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_VERTEX_ARRAY_PRIMITIVES_unpack(const uint8_t * restrict cl, |
| struct V3D21_VERTEX_ARRAY_PRIMITIVES * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->index_of_first_vertex = __gen_unpack_uint(cl, 48, 79); |
| values->length = __gen_unpack_uint(cl, 16, 47); |
| values->primitive_mode = __gen_unpack_uint(cl, 8, 11); |
| } |
| #endif |
| |
| |
| #define V3D21_PRIMITIVE_LIST_FORMAT_opcode 56 |
| #define V3D21_PRIMITIVE_LIST_FORMAT_header \ |
| .opcode = 56 |
| |
| struct V3D21_PRIMITIVE_LIST_FORMAT { |
| uint32_t opcode; |
| uint32_t data_type; |
| #define _16_BIT_INDEX 1 |
| #define _32_BIT_X_Y 3 |
| uint32_t primitive_type; |
| #define POINTS_LIST 0 |
| #define LINES_LIST 1 |
| #define TRIANGLES_LIST 2 |
| #define RHY_LIST 3 |
| }; |
| |
| static inline void |
| V3D21_PRIMITIVE_LIST_FORMAT_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_PRIMITIVE_LIST_FORMAT * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->data_type, 4, 7) | |
| __gen_uint(values->primitive_type, 0, 3); |
| |
| } |
| |
| #define V3D21_PRIMITIVE_LIST_FORMAT_length 2 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_PRIMITIVE_LIST_FORMAT_unpack(const uint8_t * restrict cl, |
| struct V3D21_PRIMITIVE_LIST_FORMAT * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->data_type = __gen_unpack_uint(cl, 12, 15); |
| values->primitive_type = __gen_unpack_uint(cl, 8, 11); |
| } |
| #endif |
| |
| |
| #define V3D21_GL_SHADER_STATE_opcode 64 |
| #define V3D21_GL_SHADER_STATE_header \ |
| .opcode = 64 |
| |
| struct V3D21_GL_SHADER_STATE { |
| uint32_t opcode; |
| uint32_t address; |
| bool extended_shader_record; |
| uint32_t number_of_attribute_arrays; |
| }; |
| |
| static inline void |
| V3D21_GL_SHADER_STATE_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_GL_SHADER_STATE * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->address, 0, 27) | |
| __gen_uint(values->extended_shader_record, 3, 3) | |
| __gen_uint(values->number_of_attribute_arrays, 0, 2); |
| |
| cl[ 2] = __gen_uint(values->address, 0, 27) >> 8; |
| |
| cl[ 3] = __gen_uint(values->address, 0, 27) >> 16; |
| |
| cl[ 4] = __gen_uint(values->address, 0, 27) >> 24; |
| |
| } |
| |
| #define V3D21_GL_SHADER_STATE_length 5 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_GL_SHADER_STATE_unpack(const uint8_t * restrict cl, |
| struct V3D21_GL_SHADER_STATE * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->address = __gen_unpack_uint(cl, 8, 35); |
| values->extended_shader_record = __gen_unpack_uint(cl, 11, 11); |
| values->number_of_attribute_arrays = __gen_unpack_uint(cl, 8, 10); |
| } |
| #endif |
| |
| |
| #define V3D21_CLEAR_COLORS_opcode 114 |
| #define V3D21_CLEAR_COLORS_header \ |
| .opcode = 114 |
| |
| struct V3D21_CLEAR_COLORS { |
| uint32_t opcode; |
| uint32_t clear_stencil; |
| uint32_t clear_vg_mask; |
| uint32_t clear_zs; |
| uint64_t clear_color; |
| }; |
| |
| static inline void |
| V3D21_CLEAR_COLORS_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_CLEAR_COLORS * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->clear_color, 0, 63); |
| |
| cl[ 2] = __gen_uint(values->clear_color, 0, 63) >> 8; |
| |
| cl[ 3] = __gen_uint(values->clear_color, 0, 63) >> 16; |
| |
| cl[ 4] = __gen_uint(values->clear_color, 0, 63) >> 24; |
| |
| cl[ 5] = __gen_uint(values->clear_color, 0, 63) >> 32; |
| |
| cl[ 6] = __gen_uint(values->clear_color, 0, 63) >> 40; |
| |
| cl[ 7] = __gen_uint(values->clear_color, 0, 63) >> 48; |
| |
| cl[ 8] = __gen_uint(values->clear_color, 0, 63) >> 56; |
| |
| cl[ 9] = __gen_uint(values->clear_zs, 0, 23); |
| |
| cl[10] = __gen_uint(values->clear_zs, 0, 23) >> 8; |
| |
| cl[11] = __gen_uint(values->clear_zs, 0, 23) >> 16; |
| |
| cl[12] = __gen_uint(values->clear_vg_mask, 0, 7); |
| |
| cl[13] = __gen_uint(values->clear_stencil, 0, 7); |
| |
| } |
| |
| #define V3D21_CLEAR_COLORS_length 14 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_CLEAR_COLORS_unpack(const uint8_t * restrict cl, |
| struct V3D21_CLEAR_COLORS * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->clear_stencil = __gen_unpack_uint(cl, 104, 111); |
| values->clear_vg_mask = __gen_unpack_uint(cl, 96, 103); |
| values->clear_zs = __gen_unpack_uint(cl, 72, 95); |
| values->clear_color = __gen_unpack_uint(cl, 8, 71); |
| } |
| #endif |
| |
| |
| #define V3D21_CONFIGURATION_BITS_opcode 96 |
| #define V3D21_CONFIGURATION_BITS_header \ |
| .opcode = 96 |
| |
| struct V3D21_CONFIGURATION_BITS { |
| uint32_t opcode; |
| bool early_z_updates_enable; |
| bool early_z_enable; |
| bool z_updates_enable; |
| enum V3D21_Compare_Function depth_test_function; |
| uint32_t coverage_read_mode; |
| bool coverage_pipe_select; |
| uint32_t rasteriser_oversample_mode; |
| uint32_t coverage_read_type; |
| bool antialiased_points_and_lines; |
| bool enable_depth_offset; |
| bool clockwise_primitives; |
| bool enable_reverse_facing_primitive; |
| bool enable_forward_facing_primitive; |
| }; |
| |
| static inline void |
| V3D21_CONFIGURATION_BITS_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_CONFIGURATION_BITS * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->rasteriser_oversample_mode, 6, 7) | |
| __gen_uint(values->coverage_read_type, 5, 5) | |
| __gen_uint(values->antialiased_points_and_lines, 4, 4) | |
| __gen_uint(values->enable_depth_offset, 3, 3) | |
| __gen_uint(values->clockwise_primitives, 2, 2) | |
| __gen_uint(values->enable_reverse_facing_primitive, 1, 1) | |
| __gen_uint(values->enable_forward_facing_primitive, 0, 0); |
| |
| cl[ 2] = __gen_uint(values->z_updates_enable, 7, 7) | |
| __gen_uint(values->depth_test_function, 4, 6) | |
| __gen_uint(values->coverage_read_mode, 3, 3) | |
| __gen_uint(values->coverage_pipe_select, 0, 0); |
| |
| cl[ 3] = __gen_uint(values->early_z_updates_enable, 1, 1) | |
| __gen_uint(values->early_z_enable, 0, 0); |
| |
| } |
| |
| #define V3D21_CONFIGURATION_BITS_length 4 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_CONFIGURATION_BITS_unpack(const uint8_t * restrict cl, |
| struct V3D21_CONFIGURATION_BITS * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->early_z_updates_enable = __gen_unpack_uint(cl, 25, 25); |
| values->early_z_enable = __gen_unpack_uint(cl, 24, 24); |
| values->z_updates_enable = __gen_unpack_uint(cl, 23, 23); |
| values->depth_test_function = __gen_unpack_uint(cl, 20, 22); |
| values->coverage_read_mode = __gen_unpack_uint(cl, 19, 19); |
| values->coverage_pipe_select = __gen_unpack_uint(cl, 16, 16); |
| values->rasteriser_oversample_mode = __gen_unpack_uint(cl, 14, 15); |
| values->coverage_read_type = __gen_unpack_uint(cl, 13, 13); |
| values->antialiased_points_and_lines = __gen_unpack_uint(cl, 12, 12); |
| values->enable_depth_offset = __gen_unpack_uint(cl, 11, 11); |
| values->clockwise_primitives = __gen_unpack_uint(cl, 10, 10); |
| values->enable_reverse_facing_primitive = __gen_unpack_uint(cl, 9, 9); |
| values->enable_forward_facing_primitive = __gen_unpack_uint(cl, 8, 8); |
| } |
| #endif |
| |
| |
| #define V3D21_FLAT_SHADE_FLAGS_opcode 97 |
| #define V3D21_FLAT_SHADE_FLAGS_header \ |
| .opcode = 97 |
| |
| struct V3D21_FLAT_SHADE_FLAGS { |
| uint32_t opcode; |
| uint32_t flat_shading_flags; |
| }; |
| |
| static inline void |
| V3D21_FLAT_SHADE_FLAGS_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_FLAT_SHADE_FLAGS * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| |
| memcpy(&cl[1], &values->flat_shading_flags, sizeof(values->flat_shading_flags)); |
| } |
| |
| #define V3D21_FLAT_SHADE_FLAGS_length 5 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_FLAT_SHADE_FLAGS_unpack(const uint8_t * restrict cl, |
| struct V3D21_FLAT_SHADE_FLAGS * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->flat_shading_flags = __gen_unpack_uint(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_POINT_SIZE_opcode 98 |
| #define V3D21_POINT_SIZE_header \ |
| .opcode = 98 |
| |
| struct V3D21_POINT_SIZE { |
| uint32_t opcode; |
| float point_size; |
| }; |
| |
| static inline void |
| V3D21_POINT_SIZE_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_POINT_SIZE * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| |
| memcpy(&cl[1], &values->point_size, sizeof(values->point_size)); |
| } |
| |
| #define V3D21_POINT_SIZE_length 5 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_POINT_SIZE_unpack(const uint8_t * restrict cl, |
| struct V3D21_POINT_SIZE * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->point_size = __gen_unpack_float(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_LINE_WIDTH_opcode 99 |
| #define V3D21_LINE_WIDTH_header \ |
| .opcode = 99 |
| |
| struct V3D21_LINE_WIDTH { |
| uint32_t opcode; |
| float line_width; |
| }; |
| |
| static inline void |
| V3D21_LINE_WIDTH_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_LINE_WIDTH * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| |
| memcpy(&cl[1], &values->line_width, sizeof(values->line_width)); |
| } |
| |
| #define V3D21_LINE_WIDTH_length 5 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_LINE_WIDTH_unpack(const uint8_t * restrict cl, |
| struct V3D21_LINE_WIDTH * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->line_width = __gen_unpack_float(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_RHT_X_BOUNDARY_opcode 100 |
| #define V3D21_RHT_X_BOUNDARY_header \ |
| .opcode = 100 |
| |
| struct V3D21_RHT_X_BOUNDARY { |
| uint32_t opcode; |
| int32_t rht_primitive_x_boundary; |
| }; |
| |
| static inline void |
| V3D21_RHT_X_BOUNDARY_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_RHT_X_BOUNDARY * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_sint(values->rht_primitive_x_boundary, 0, 15); |
| |
| cl[ 2] = __gen_sint(values->rht_primitive_x_boundary, 0, 15) >> 8; |
| |
| } |
| |
| #define V3D21_RHT_X_BOUNDARY_length 3 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_RHT_X_BOUNDARY_unpack(const uint8_t * restrict cl, |
| struct V3D21_RHT_X_BOUNDARY * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->rht_primitive_x_boundary = __gen_unpack_sint(cl, 8, 23); |
| } |
| #endif |
| |
| |
| #define V3D21_DEPTH_OFFSET_opcode 101 |
| #define V3D21_DEPTH_OFFSET_header \ |
| .opcode = 101 |
| |
| struct V3D21_DEPTH_OFFSET { |
| uint32_t opcode; |
| uint32_t depth_offset_units; |
| uint32_t depth_offset_factor; |
| }; |
| |
| static inline void |
| V3D21_DEPTH_OFFSET_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_DEPTH_OFFSET * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->depth_offset_factor, 0, 15); |
| |
| cl[ 2] = __gen_uint(values->depth_offset_factor, 0, 15) >> 8; |
| |
| cl[ 3] = __gen_uint(values->depth_offset_units, 0, 15); |
| |
| cl[ 4] = __gen_uint(values->depth_offset_units, 0, 15) >> 8; |
| |
| } |
| |
| #define V3D21_DEPTH_OFFSET_length 5 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_DEPTH_OFFSET_unpack(const uint8_t * restrict cl, |
| struct V3D21_DEPTH_OFFSET * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->depth_offset_units = __gen_unpack_uint(cl, 24, 39); |
| values->depth_offset_factor = __gen_unpack_uint(cl, 8, 23); |
| } |
| #endif |
| |
| |
| #define V3D21_CLIP_WINDOW_opcode 102 |
| #define V3D21_CLIP_WINDOW_header \ |
| .opcode = 102 |
| |
| struct V3D21_CLIP_WINDOW { |
| uint32_t opcode; |
| uint32_t clip_window_height_in_pixels; |
| uint32_t clip_window_width_in_pixels; |
| uint32_t clip_window_bottom_pixel_coordinate; |
| uint32_t clip_window_left_pixel_coordinate; |
| }; |
| |
| static inline void |
| V3D21_CLIP_WINDOW_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_CLIP_WINDOW * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->clip_window_left_pixel_coordinate, 0, 15); |
| |
| cl[ 2] = __gen_uint(values->clip_window_left_pixel_coordinate, 0, 15) >> 8; |
| |
| cl[ 3] = __gen_uint(values->clip_window_bottom_pixel_coordinate, 0, 15); |
| |
| cl[ 4] = __gen_uint(values->clip_window_bottom_pixel_coordinate, 0, 15) >> 8; |
| |
| cl[ 5] = __gen_uint(values->clip_window_width_in_pixels, 0, 15); |
| |
| cl[ 6] = __gen_uint(values->clip_window_width_in_pixels, 0, 15) >> 8; |
| |
| cl[ 7] = __gen_uint(values->clip_window_height_in_pixels, 0, 15); |
| |
| cl[ 8] = __gen_uint(values->clip_window_height_in_pixels, 0, 15) >> 8; |
| |
| } |
| |
| #define V3D21_CLIP_WINDOW_length 9 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_CLIP_WINDOW_unpack(const uint8_t * restrict cl, |
| struct V3D21_CLIP_WINDOW * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->clip_window_height_in_pixels = __gen_unpack_uint(cl, 56, 71); |
| values->clip_window_width_in_pixels = __gen_unpack_uint(cl, 40, 55); |
| values->clip_window_bottom_pixel_coordinate = __gen_unpack_uint(cl, 24, 39); |
| values->clip_window_left_pixel_coordinate = __gen_unpack_uint(cl, 8, 23); |
| } |
| #endif |
| |
| |
| #define V3D21_VIEWPORT_OFFSET_opcode 103 |
| #define V3D21_VIEWPORT_OFFSET_header \ |
| .opcode = 103 |
| |
| struct V3D21_VIEWPORT_OFFSET { |
| uint32_t opcode; |
| float viewport_centre_y_coordinate; |
| float viewport_centre_x_coordinate; |
| }; |
| |
| static inline void |
| V3D21_VIEWPORT_OFFSET_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_VIEWPORT_OFFSET * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_sfixed(values->viewport_centre_x_coordinate, 0, 15, 4); |
| |
| cl[ 2] = __gen_sfixed(values->viewport_centre_x_coordinate, 0, 15, 4) >> 8; |
| |
| cl[ 3] = __gen_sfixed(values->viewport_centre_y_coordinate, 0, 15, 4); |
| |
| cl[ 4] = __gen_sfixed(values->viewport_centre_y_coordinate, 0, 15, 4) >> 8; |
| |
| } |
| |
| #define V3D21_VIEWPORT_OFFSET_length 5 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_VIEWPORT_OFFSET_unpack(const uint8_t * restrict cl, |
| struct V3D21_VIEWPORT_OFFSET * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->viewport_centre_y_coordinate = __gen_unpack_sfixed(cl, 24, 39, 4); |
| values->viewport_centre_x_coordinate = __gen_unpack_sfixed(cl, 8, 23, 4); |
| } |
| #endif |
| |
| |
| #define V3D21_Z_MIN_AND_MAX_CLIPPING_PLANES_opcode 104 |
| #define V3D21_Z_MIN_AND_MAX_CLIPPING_PLANES_header\ |
| .opcode = 104 |
| |
| struct V3D21_Z_MIN_AND_MAX_CLIPPING_PLANES { |
| uint32_t opcode; |
| float maximum_zw; |
| float minimum_zw; |
| }; |
| |
| static inline void |
| V3D21_Z_MIN_AND_MAX_CLIPPING_PLANES_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_Z_MIN_AND_MAX_CLIPPING_PLANES * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| |
| memcpy(&cl[1], &values->minimum_zw, sizeof(values->minimum_zw)); |
| |
| memcpy(&cl[5], &values->maximum_zw, sizeof(values->maximum_zw)); |
| } |
| |
| #define V3D21_Z_MIN_AND_MAX_CLIPPING_PLANES_length 9 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_Z_MIN_AND_MAX_CLIPPING_PLANES_unpack(const uint8_t * restrict cl, |
| struct V3D21_Z_MIN_AND_MAX_CLIPPING_PLANES * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->maximum_zw = __gen_unpack_float(cl, 40, 71); |
| values->minimum_zw = __gen_unpack_float(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_CLIPPER_XY_SCALING_opcode 105 |
| #define V3D21_CLIPPER_XY_SCALING_header \ |
| .opcode = 105 |
| |
| struct V3D21_CLIPPER_XY_SCALING { |
| uint32_t opcode; |
| float viewport_half_height_in_1_16th_of_pixel; |
| float viewport_half_width_in_1_16th_of_pixel; |
| }; |
| |
| static inline void |
| V3D21_CLIPPER_XY_SCALING_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_CLIPPER_XY_SCALING * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| |
| memcpy(&cl[1], &values->viewport_half_width_in_1_16th_of_pixel, sizeof(values->viewport_half_width_in_1_16th_of_pixel)); |
| |
| memcpy(&cl[5], &values->viewport_half_height_in_1_16th_of_pixel, sizeof(values->viewport_half_height_in_1_16th_of_pixel)); |
| } |
| |
| #define V3D21_CLIPPER_XY_SCALING_length 9 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_CLIPPER_XY_SCALING_unpack(const uint8_t * restrict cl, |
| struct V3D21_CLIPPER_XY_SCALING * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->viewport_half_height_in_1_16th_of_pixel = __gen_unpack_float(cl, 40, 71); |
| values->viewport_half_width_in_1_16th_of_pixel = __gen_unpack_float(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_CLIPPER_Z_SCALE_AND_OFFSET_opcode 106 |
| #define V3D21_CLIPPER_Z_SCALE_AND_OFFSET_header \ |
| .opcode = 106 |
| |
| struct V3D21_CLIPPER_Z_SCALE_AND_OFFSET { |
| uint32_t opcode; |
| float viewport_z_offset_zc_to_zs; |
| float viewport_z_scale_zc_to_zs; |
| }; |
| |
| static inline void |
| V3D21_CLIPPER_Z_SCALE_AND_OFFSET_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_CLIPPER_Z_SCALE_AND_OFFSET * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| |
| memcpy(&cl[1], &values->viewport_z_scale_zc_to_zs, sizeof(values->viewport_z_scale_zc_to_zs)); |
| |
| memcpy(&cl[5], &values->viewport_z_offset_zc_to_zs, sizeof(values->viewport_z_offset_zc_to_zs)); |
| } |
| |
| #define V3D21_CLIPPER_Z_SCALE_AND_OFFSET_length 9 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_CLIPPER_Z_SCALE_AND_OFFSET_unpack(const uint8_t * restrict cl, |
| struct V3D21_CLIPPER_Z_SCALE_AND_OFFSET * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->viewport_z_offset_zc_to_zs = __gen_unpack_float(cl, 40, 71); |
| values->viewport_z_scale_zc_to_zs = __gen_unpack_float(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_TILE_BINNING_MODE_CONFIGURATION_opcode 112 |
| #define V3D21_TILE_BINNING_MODE_CONFIGURATION_header\ |
| .opcode = 112 |
| |
| struct V3D21_TILE_BINNING_MODE_CONFIGURATION { |
| uint32_t opcode; |
| bool double_buffer_in_non_ms_mode; |
| uint32_t tile_allocation_block_size; |
| #define BLOCK_SIZE_32 0 |
| #define BLOCK_SIZE_64 1 |
| #define BLOCK_SIZE_128 2 |
| #define BLOCK_SIZE_256 3 |
| uint32_t tile_allocation_initial_block_size; |
| #define BLOCK_SIZE_32 0 |
| #define BLOCK_SIZE_64 1 |
| #define BLOCK_SIZE_128 2 |
| #define BLOCK_SIZE_256 3 |
| bool auto_initialise_tile_state_data_array; |
| bool tile_buffer_64_bit_color_depth; |
| bool multisample_mode_4x; |
| uint32_t height_in_tiles; |
| uint32_t width_in_tiles; |
| uint32_t tile_state_data_array_address; |
| uint32_t tile_allocation_memory_size; |
| uint32_t tile_allocation_memory_address; |
| }; |
| |
| static inline void |
| V3D21_TILE_BINNING_MODE_CONFIGURATION_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_TILE_BINNING_MODE_CONFIGURATION * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| |
| memcpy(&cl[1], &values->tile_allocation_memory_address, sizeof(values->tile_allocation_memory_address)); |
| |
| memcpy(&cl[5], &values->tile_allocation_memory_size, sizeof(values->tile_allocation_memory_size)); |
| |
| memcpy(&cl[9], &values->tile_state_data_array_address, sizeof(values->tile_state_data_array_address)); |
| cl[13] = __gen_uint(values->width_in_tiles, 0, 7); |
| |
| cl[14] = __gen_uint(values->height_in_tiles, 0, 7); |
| |
| cl[15] = __gen_uint(values->double_buffer_in_non_ms_mode, 7, 7) | |
| __gen_uint(values->tile_allocation_block_size, 5, 6) | |
| __gen_uint(values->tile_allocation_initial_block_size, 3, 4) | |
| __gen_uint(values->auto_initialise_tile_state_data_array, 2, 2) | |
| __gen_uint(values->tile_buffer_64_bit_color_depth, 1, 1) | |
| __gen_uint(values->multisample_mode_4x, 0, 0); |
| |
| } |
| |
| #define V3D21_TILE_BINNING_MODE_CONFIGURATION_length 16 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_TILE_BINNING_MODE_CONFIGURATION_unpack(const uint8_t * restrict cl, |
| struct V3D21_TILE_BINNING_MODE_CONFIGURATION * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->double_buffer_in_non_ms_mode = __gen_unpack_uint(cl, 127, 127); |
| values->tile_allocation_block_size = __gen_unpack_uint(cl, 125, 126); |
| values->tile_allocation_initial_block_size = __gen_unpack_uint(cl, 123, 124); |
| values->auto_initialise_tile_state_data_array = __gen_unpack_uint(cl, 122, 122); |
| values->tile_buffer_64_bit_color_depth = __gen_unpack_uint(cl, 121, 121); |
| values->multisample_mode_4x = __gen_unpack_uint(cl, 120, 120); |
| values->height_in_tiles = __gen_unpack_uint(cl, 112, 119); |
| values->width_in_tiles = __gen_unpack_uint(cl, 104, 111); |
| values->tile_state_data_array_address = __gen_unpack_uint(cl, 72, 103); |
| values->tile_allocation_memory_size = __gen_unpack_uint(cl, 40, 71); |
| values->tile_allocation_memory_address = __gen_unpack_uint(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_TILE_RENDERING_MODE_CONFIGURATION_opcode 113 |
| #define V3D21_TILE_RENDERING_MODE_CONFIGURATION_header\ |
| .opcode = 113 |
| |
| struct V3D21_TILE_RENDERING_MODE_CONFIGURATION { |
| uint32_t opcode; |
| bool double_buffer_in_non_ms_mode; |
| bool early_z_early_cov_disable; |
| bool early_z_update_direction_gt_ge; |
| bool select_coverage_mode; |
| bool enable_vg_mask_buffer; |
| uint32_t memory_format; |
| #define RASTER 0 |
| #define T 1 |
| #define LT 2 |
| uint32_t decimate_mode; |
| uint32_t non_hdr_frame_buffer_color_format; |
| #define RENDERING_CONFIG_BGR565_DITHERED 0 |
| #define RENDERING_CONFIG_RGBA8888 1 |
| #define RENDERING_CONFIG_BGR565_NO_DITHER 2 |
| bool tile_buffer_64_bit_color_depth; |
| bool multisample_mode_4x; |
| uint32_t height_pixels; |
| uint32_t width_pixels; |
| __gen_address_type memory_address; |
| }; |
| |
| static inline void |
| V3D21_TILE_RENDERING_MODE_CONFIGURATION_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_TILE_RENDERING_MODE_CONFIGURATION * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| __gen_emit_reloc(data, &values->memory_address); |
| cl[ 1] = __gen_address_offset(&values->memory_address); |
| |
| cl[ 2] = __gen_address_offset(&values->memory_address) >> 8; |
| |
| cl[ 3] = __gen_address_offset(&values->memory_address) >> 16; |
| |
| cl[ 4] = __gen_address_offset(&values->memory_address) >> 24; |
| |
| cl[ 5] = __gen_uint(values->width_pixels, 0, 15); |
| |
| cl[ 6] = __gen_uint(values->width_pixels, 0, 15) >> 8; |
| |
| cl[ 7] = __gen_uint(values->height_pixels, 0, 15); |
| |
| cl[ 8] = __gen_uint(values->height_pixels, 0, 15) >> 8; |
| |
| cl[ 9] = __gen_uint(values->memory_format, 6, 7) | |
| __gen_uint(values->decimate_mode, 4, 5) | |
| __gen_uint(values->non_hdr_frame_buffer_color_format, 2, 3) | |
| __gen_uint(values->tile_buffer_64_bit_color_depth, 1, 1) | |
| __gen_uint(values->multisample_mode_4x, 0, 0); |
| |
| cl[10] = __gen_uint(values->double_buffer_in_non_ms_mode, 4, 4) | |
| __gen_uint(values->early_z_early_cov_disable, 3, 3) | |
| __gen_uint(values->early_z_update_direction_gt_ge, 2, 2) | |
| __gen_uint(values->select_coverage_mode, 1, 1) | |
| __gen_uint(values->enable_vg_mask_buffer, 0, 0); |
| |
| } |
| |
| #define V3D21_TILE_RENDERING_MODE_CONFIGURATION_length 11 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_TILE_RENDERING_MODE_CONFIGURATION_unpack(const uint8_t * restrict cl, |
| struct V3D21_TILE_RENDERING_MODE_CONFIGURATION * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->double_buffer_in_non_ms_mode = __gen_unpack_uint(cl, 84, 84); |
| values->early_z_early_cov_disable = __gen_unpack_uint(cl, 83, 83); |
| values->early_z_update_direction_gt_ge = __gen_unpack_uint(cl, 82, 82); |
| values->select_coverage_mode = __gen_unpack_uint(cl, 81, 81); |
| values->enable_vg_mask_buffer = __gen_unpack_uint(cl, 80, 80); |
| values->memory_format = __gen_unpack_uint(cl, 78, 79); |
| values->decimate_mode = __gen_unpack_uint(cl, 76, 77); |
| values->non_hdr_frame_buffer_color_format = __gen_unpack_uint(cl, 74, 75); |
| values->tile_buffer_64_bit_color_depth = __gen_unpack_uint(cl, 73, 73); |
| values->multisample_mode_4x = __gen_unpack_uint(cl, 72, 72); |
| values->height_pixels = __gen_unpack_uint(cl, 56, 71); |
| values->width_pixels = __gen_unpack_uint(cl, 40, 55); |
| values->memory_address = __gen_unpack_address(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_TILE_COORDINATES_opcode 115 |
| #define V3D21_TILE_COORDINATES_header \ |
| .opcode = 115 |
| |
| struct V3D21_TILE_COORDINATES { |
| uint32_t opcode; |
| uint32_t tile_row_number; |
| uint32_t tile_column_number; |
| }; |
| |
| static inline void |
| V3D21_TILE_COORDINATES_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_TILE_COORDINATES * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| cl[ 1] = __gen_uint(values->tile_column_number, 0, 7); |
| |
| cl[ 2] = __gen_uint(values->tile_row_number, 0, 7); |
| |
| } |
| |
| #define V3D21_TILE_COORDINATES_length 3 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_TILE_COORDINATES_unpack(const uint8_t * restrict cl, |
| struct V3D21_TILE_COORDINATES * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->tile_row_number = __gen_unpack_uint(cl, 16, 23); |
| values->tile_column_number = __gen_unpack_uint(cl, 8, 15); |
| } |
| #endif |
| |
| |
| #define V3D21_GEM_RELOCATIONS_opcode 254 |
| #define V3D21_GEM_RELOCATIONS_header \ |
| .opcode = 254 |
| |
| struct V3D21_GEM_RELOCATIONS { |
| uint32_t opcode; |
| uint32_t buffer_1; |
| uint32_t buffer_0; |
| }; |
| |
| static inline void |
| V3D21_GEM_RELOCATIONS_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_GEM_RELOCATIONS * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->opcode, 0, 7); |
| |
| |
| memcpy(&cl[1], &values->buffer_0, sizeof(values->buffer_0)); |
| |
| memcpy(&cl[5], &values->buffer_1, sizeof(values->buffer_1)); |
| } |
| |
| #define V3D21_GEM_RELOCATIONS_length 9 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_GEM_RELOCATIONS_unpack(const uint8_t * restrict cl, |
| struct V3D21_GEM_RELOCATIONS * restrict values) |
| { |
| values->opcode = __gen_unpack_uint(cl, 0, 7); |
| values->buffer_1 = __gen_unpack_uint(cl, 40, 71); |
| values->buffer_0 = __gen_unpack_uint(cl, 8, 39); |
| } |
| #endif |
| |
| |
| #define V3D21_SHADER_RECORD_header \ |
| |
| |
| struct V3D21_SHADER_RECORD { |
| bool fragment_shader_is_single_threaded; |
| bool point_size_included_in_shaded_vertex_data; |
| bool enable_clipping; |
| uint32_t fragment_shader_number_of_uniforms_not_used_currently; |
| uint32_t fragment_shader_number_of_varyings; |
| __gen_address_type fragment_shader_code_address; |
| uint32_t fragment_shader_uniforms_address; |
| uint32_t vertex_shader_number_of_uniforms_not_used_currently; |
| uint32_t vertex_shader_attribute_array_select_bits; |
| uint32_t vertex_shader_total_attributes_size; |
| __gen_address_type vertex_shader_code_address; |
| uint32_t vertex_shader_uniforms_address; |
| uint32_t coordinate_shader_number_of_uniforms_not_used_currently; |
| uint32_t coordinate_shader_attribute_array_select_bits; |
| uint32_t coordinate_shader_total_attributes_size; |
| __gen_address_type coordinate_shader_code_address; |
| uint32_t coordinate_shader_uniforms_address; |
| }; |
| |
| static inline void |
| V3D21_SHADER_RECORD_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_SHADER_RECORD * restrict values) |
| { |
| cl[ 0] = __gen_uint(values->fragment_shader_is_single_threaded, 0, 0) | |
| __gen_uint(values->point_size_included_in_shaded_vertex_data, 1, 1) | |
| __gen_uint(values->enable_clipping, 2, 2); |
| |
| cl[ 1] = 0; |
| cl[ 2] = __gen_uint(values->fragment_shader_number_of_uniforms_not_used_currently, 0, 15); |
| |
| cl[ 3] = __gen_uint(values->fragment_shader_number_of_uniforms_not_used_currently, 0, 15) >> 8 | |
| __gen_uint(values->fragment_shader_number_of_varyings, 0, 7); |
| |
| __gen_emit_reloc(data, &values->fragment_shader_code_address); |
| cl[ 4] = __gen_address_offset(&values->fragment_shader_code_address); |
| |
| cl[ 5] = __gen_address_offset(&values->fragment_shader_code_address) >> 8; |
| |
| cl[ 6] = __gen_address_offset(&values->fragment_shader_code_address) >> 16; |
| |
| cl[ 7] = __gen_address_offset(&values->fragment_shader_code_address) >> 24; |
| |
| |
| memcpy(&cl[8], &values->fragment_shader_uniforms_address, sizeof(values->fragment_shader_uniforms_address)); |
| cl[12] = __gen_uint(values->vertex_shader_number_of_uniforms_not_used_currently, 0, 15); |
| |
| cl[13] = __gen_uint(values->vertex_shader_number_of_uniforms_not_used_currently, 0, 15) >> 8; |
| |
| cl[14] = __gen_uint(values->vertex_shader_attribute_array_select_bits, 0, 7); |
| |
| cl[15] = __gen_uint(values->vertex_shader_total_attributes_size, 0, 7); |
| |
| __gen_emit_reloc(data, &values->vertex_shader_code_address); |
| cl[16] = __gen_address_offset(&values->vertex_shader_code_address) | |
| __gen_uint(values->vertex_shader_uniforms_address, 0, 31); |
| |
| cl[17] = __gen_address_offset(&values->vertex_shader_code_address) >> 8 | |
| __gen_uint(values->vertex_shader_uniforms_address, 0, 31) >> 8; |
| |
| cl[18] = __gen_address_offset(&values->vertex_shader_code_address) >> 16 | |
| __gen_uint(values->vertex_shader_uniforms_address, 0, 31) >> 16; |
| |
| cl[19] = __gen_address_offset(&values->vertex_shader_code_address) >> 24 | |
| __gen_uint(values->vertex_shader_uniforms_address, 0, 31) >> 24; |
| |
| cl[20] = 0; |
| cl[21] = 0; |
| cl[22] = 0; |
| cl[23] = 0; |
| cl[24] = __gen_uint(values->coordinate_shader_number_of_uniforms_not_used_currently, 0, 15); |
| |
| cl[25] = __gen_uint(values->coordinate_shader_number_of_uniforms_not_used_currently, 0, 15) >> 8; |
| |
| cl[26] = __gen_uint(values->coordinate_shader_attribute_array_select_bits, 0, 7); |
| |
| cl[27] = __gen_uint(values->coordinate_shader_total_attributes_size, 0, 7); |
| |
| __gen_emit_reloc(data, &values->coordinate_shader_code_address); |
| cl[28] = __gen_address_offset(&values->coordinate_shader_code_address); |
| |
| cl[29] = __gen_address_offset(&values->coordinate_shader_code_address) >> 8; |
| |
| cl[30] = __gen_address_offset(&values->coordinate_shader_code_address) >> 16; |
| |
| cl[31] = __gen_address_offset(&values->coordinate_shader_code_address) >> 24; |
| |
| |
| memcpy(&cl[32], &values->coordinate_shader_uniforms_address, sizeof(values->coordinate_shader_uniforms_address)); |
| } |
| |
| #define V3D21_SHADER_RECORD_length 36 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_SHADER_RECORD_unpack(const uint8_t * restrict cl, |
| struct V3D21_SHADER_RECORD * restrict values) |
| { |
| values->fragment_shader_is_single_threaded = __gen_unpack_uint(cl, 0, 0); |
| values->point_size_included_in_shaded_vertex_data = __gen_unpack_uint(cl, 1, 1); |
| values->enable_clipping = __gen_unpack_uint(cl, 2, 2); |
| values->fragment_shader_number_of_uniforms_not_used_currently = __gen_unpack_uint(cl, 16, 31); |
| values->fragment_shader_number_of_varyings = __gen_unpack_uint(cl, 24, 31); |
| values->fragment_shader_code_address = __gen_unpack_address(cl, 32, 63); |
| values->fragment_shader_uniforms_address = __gen_unpack_uint(cl, 64, 95); |
| values->vertex_shader_number_of_uniforms_not_used_currently = __gen_unpack_uint(cl, 96, 111); |
| values->vertex_shader_attribute_array_select_bits = __gen_unpack_uint(cl, 112, 119); |
| values->vertex_shader_total_attributes_size = __gen_unpack_uint(cl, 120, 127); |
| values->vertex_shader_code_address = __gen_unpack_address(cl, 128, 159); |
| values->vertex_shader_uniforms_address = __gen_unpack_uint(cl, 128, 159); |
| values->coordinate_shader_number_of_uniforms_not_used_currently = __gen_unpack_uint(cl, 192, 207); |
| values->coordinate_shader_attribute_array_select_bits = __gen_unpack_uint(cl, 208, 215); |
| values->coordinate_shader_total_attributes_size = __gen_unpack_uint(cl, 216, 223); |
| values->coordinate_shader_code_address = __gen_unpack_address(cl, 224, 255); |
| values->coordinate_shader_uniforms_address = __gen_unpack_uint(cl, 256, 287); |
| } |
| #endif |
| |
| |
| #define V3D21_ATTRIBUTE_RECORD_header \ |
| |
| |
| struct V3D21_ATTRIBUTE_RECORD { |
| __gen_address_type address; |
| uint32_t number_of_bytes_minus_1; |
| uint32_t stride; |
| uint32_t vertex_shader_vpm_offset; |
| uint32_t coordinate_shader_vpm_offset; |
| }; |
| |
| static inline void |
| V3D21_ATTRIBUTE_RECORD_pack(__gen_user_data *data, uint8_t * restrict cl, |
| const struct V3D21_ATTRIBUTE_RECORD * restrict values) |
| { |
| __gen_emit_reloc(data, &values->address); |
| cl[ 0] = __gen_address_offset(&values->address); |
| |
| cl[ 1] = __gen_address_offset(&values->address) >> 8; |
| |
| cl[ 2] = __gen_address_offset(&values->address) >> 16; |
| |
| cl[ 3] = __gen_address_offset(&values->address) >> 24; |
| |
| cl[ 4] = __gen_uint(values->number_of_bytes_minus_1, 0, 7); |
| |
| cl[ 5] = __gen_uint(values->stride, 0, 7); |
| |
| cl[ 6] = __gen_uint(values->vertex_shader_vpm_offset, 0, 7); |
| |
| cl[ 7] = __gen_uint(values->coordinate_shader_vpm_offset, 0, 7); |
| |
| } |
| |
| #define V3D21_ATTRIBUTE_RECORD_length 8 |
| #ifdef __gen_unpack_address |
| static inline void |
| V3D21_ATTRIBUTE_RECORD_unpack(const uint8_t * restrict cl, |
| struct V3D21_ATTRIBUTE_RECORD * restrict values) |
| { |
| values->address = __gen_unpack_address(cl, 0, 31); |
| values->number_of_bytes_minus_1 = __gen_unpack_uint(cl, 32, 39); |
| values->stride = __gen_unpack_uint(cl, 40, 47); |
| values->vertex_shader_vpm_offset = __gen_unpack_uint(cl, 48, 55); |
| values->coordinate_shader_vpm_offset = __gen_unpack_uint(cl, 56, 63); |
| } |
| #endif |
| |
| |
| #endif /* V3D21_PACK_H */ |