123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #ifndef __CHAI_NOTES_H
- #define __CHAI_NOTES_H
- #include <stddef.h>
- #include "jobs.h"
- struct payload_set_value {
- uint64_t out;
- uint64_t unknown;
- };
- #define FBD_POINTER_MASK (~0x3f)
- #define FBD_TYPE 1
- #define SFBD (0)
- #define MFBD (1)
- #define FBD_TILER (0)
- #define FBD_FRAGMENT (2)
- #define X_COORDINATE_MASK 0x00000FFF
- #define Y_COORDINATE_MASK 0x0FFF0000
- #define TILE_COORD_X(coord) ((coord) & X_COORDINATE_MASK)
- #define TILE_COORD_Y(coord) (((coord) & Y_COORDINATE_MASK) >> 16)
- #define MAKE_TILE_COORD(X, Y, flag) ((X) | ((Y) << 16) | (flag))
- struct payload_fragment {
- uint32_t min_tile_coord;
- uint32_t max_tile_coord;
- uint64_t fragment_fbd;
- };
- struct payload_vertex_tiler {
- uint32_t block1[10];
- uintptr_t null0;
- uintptr_t zeroes;
- uintptr_t unknown1;
- uintptr_t null1;
- uintptr_t null2;
- uintptr_t unknown2;
- uintptr_t shader;
- uintptr_t attributes;
- uintptr_t attribute_meta;
- uintptr_t unknown5;
- uintptr_t unknown6;
- uintptr_t nullForVertex;
- uintptr_t null4;
- uintptr_t fbd;
- uintptr_t unknown7;
- uint32_t block2[36];
- };
- #define SHADER (1 << 0)
- #define SHADER_VERTEX (1 << 2)
- #define SHADER_FRAGMENT (1 << 3)
- struct shader_meta {
- uint64_t shader;
- uint64_t unknown1;
- uint64_t unknown2;
- };
- struct attribute_buffer {
- uint64_t elements;
- size_t element_size;
- size_t total_size;
- };
- typedef uint64_t attribute_meta_t;
- #define HAS_ATTRIBUTE(meta) (!!meta)
- #define ATTRIBUTE_NO(meta) (meta & 0xFF)
- #define ATTRIBUTE_FLAGS(meta) (meta & 0xFFFFFFFFFFFFFF00)
- #define JOB_NOT_STARTED (0)
- #define JOB_TYPE_NULL (1)
- #define JOB_TYPE_SET_VALUE (2)
- #define JOB_TYPE_CACHE_FLUSH (3)
- #define JOB_TYPE_COMPUTE (4)
- #define JOB_TYPE_VERTEX (5)
- #define JOB_TYPE_TILER (7)
- #define JOB_TYPE_FUSED (8)
- #define JOB_TYPE_FRAGMENT (9)
- #define CHAI_POINTS 0x01
- #define CHAI_LINES 0x02
- #define CHAI_TRIANGLES 0x08
- #define CHAI_TRIANGLE_STRIP 0x0A
- #define CHAI_TRIANGLE_FAN 0x0C
- #define FBD_HIERARCHY_WEIGHTS 8
- #define FBD_HIERARCHY_MASK_MASK 0x1fff
- struct tentative_mfbd {
- uint64_t blah;
- uint64_t ugaT;
- uint32_t block1[10];
- uint32_t unknown1;
- uint32_t flags;
- uint64_t block2[2];
- uint64_t heap_free_address;
- uint64_t unknown2;
- uint32_t weights[FBD_HIERARCHY_WEIGHTS];
- uint64_t unknown_gpu_addressN;
- uint32_t block3[22];
- uint64_t unknown_gpu_address;
- uint64_t unknown3;
- uint32_t block4[10];
- };
- #define JOB_32_BIT 0
- #define JOB_64_BIT 1
- #endif
|