util: Replace the usage of ALIGN16 with alignas(16) and them remove ALIGN16 macro
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19565>
This commit is contained in:
@@ -184,7 +184,7 @@ struct tu6_global
|
||||
uint32_t pad[7];
|
||||
} flush_base[4];
|
||||
|
||||
ALIGN16 uint32_t cs_indirect_xyz[3];
|
||||
alignas(16) uint32_t cs_indirect_xyz[3];
|
||||
|
||||
volatile uint32_t vtx_stats_query_not_running;
|
||||
|
||||
|
@@ -73,18 +73,27 @@
|
||||
#define TILE_BOTTOM_LEFT 2
|
||||
#define TILE_BOTTOM_RIGHT 3
|
||||
|
||||
static_assert(alignof(union tgsi_exec_channel) == 16, "");
|
||||
static_assert(alignof(struct tgsi_exec_vector) == 16, "");
|
||||
static_assert(alignof(struct tgsi_exec_machine) == 16, "");
|
||||
|
||||
union tgsi_double_channel {
|
||||
alignas(16)
|
||||
double d[TGSI_QUAD_SIZE];
|
||||
unsigned u[TGSI_QUAD_SIZE][2];
|
||||
uint64_t u64[TGSI_QUAD_SIZE];
|
||||
int64_t i64[TGSI_QUAD_SIZE];
|
||||
} ALIGN16;
|
||||
};
|
||||
|
||||
struct ALIGN16 tgsi_double_vector {
|
||||
struct tgsi_double_vector {
|
||||
alignas(16)
|
||||
union tgsi_double_channel xy;
|
||||
union tgsi_double_channel zw;
|
||||
};
|
||||
|
||||
static_assert(alignof(union tgsi_double_channel) == 16, "");
|
||||
static_assert(alignof(struct tgsi_double_vector) == 16, "");
|
||||
|
||||
static void
|
||||
micro_abs(union tgsi_exec_channel *dst,
|
||||
const union tgsi_exec_channel *src)
|
||||
|
@@ -73,17 +73,18 @@ extern "C" {
|
||||
*/
|
||||
union tgsi_exec_channel
|
||||
{
|
||||
alignas(16)
|
||||
float f[TGSI_QUAD_SIZE];
|
||||
int i[TGSI_QUAD_SIZE];
|
||||
unsigned u[TGSI_QUAD_SIZE];
|
||||
} ALIGN16;
|
||||
};
|
||||
|
||||
/**
|
||||
* A vector[RGBA] of channels[4 pixels]
|
||||
*/
|
||||
struct ALIGN16 tgsi_exec_vector
|
||||
struct tgsi_exec_vector
|
||||
{
|
||||
union tgsi_exec_channel xyzw[TGSI_NUM_CHANNELS];
|
||||
alignas(16) union tgsi_exec_channel xyzw[TGSI_NUM_CHANNELS];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -286,10 +287,11 @@ typedef void (* apply_sample_offset_func)(
|
||||
/**
|
||||
* Run-time virtual machine state for executing TGSI shader.
|
||||
*/
|
||||
struct ALIGN16 tgsi_exec_machine
|
||||
struct tgsi_exec_machine
|
||||
{
|
||||
/* Total = program temporaries + internal temporaries
|
||||
*/
|
||||
alignas(16)
|
||||
struct tgsi_exec_vector Temps[TGSI_EXEC_NUM_TEMPS];
|
||||
|
||||
unsigned ImmsReserved;
|
||||
|
@@ -79,8 +79,8 @@ enum GLmatrixtype {
|
||||
* Matrix type to represent 4x4 transformation matrices.
|
||||
*/
|
||||
typedef struct {
|
||||
ALIGN16 GLfloat m[16]; /**< 16 matrix elements (16-byte aligned) */
|
||||
ALIGN16 GLfloat inv[16]; /**< 16-element inverse (16-byte aligned) */
|
||||
alignas(16) GLfloat m[16]; /**< 16 matrix elements (16-byte aligned) */
|
||||
alignas(16) GLfloat inv[16]; /**< 16-element inverse (16-byte aligned) */
|
||||
GLuint flags; /**< possible values determined by (of \link
|
||||
* MatFlags MAT_FLAG_* flags\endlink)
|
||||
*/
|
||||
|
@@ -215,12 +215,6 @@ do { \
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define ALIGN16 __declspec(align(16))
|
||||
#else
|
||||
#define ALIGN16 __attribute__((aligned(16)))
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
/**
|
||||
* Macro function that evaluates to true if T is a trivially
|
||||
@@ -413,6 +407,24 @@ u_uintN_max(unsigned bit_size)
|
||||
return UINT64_MAX >> (64 - bit_size);
|
||||
}
|
||||
|
||||
/* alignas usage
|
||||
* For struct or union, use alignas(align_size) on any member
|
||||
* of it will make it aligned to align_size.
|
||||
* See https://en.cppreference.com/w/c/language/_Alignas for
|
||||
* details. We can use static_assert and alignof to check if
|
||||
* the alignment result of alignas(align_size) on struct or
|
||||
* union is valid.
|
||||
* For example:
|
||||
* static_assert(alignof(struct tgsi_exec_machine) == 16, "")
|
||||
* Also, we can use special code to see the size of the aligned
|
||||
* struct or union at the compile time with GCC, Clang or MSVC.
|
||||
* So we can see if the size of union or struct are as expected
|
||||
* when using alignas(align_size) on its member.
|
||||
* For example:
|
||||
* char (*__kaboom)[sizeof(struct tgsi_exec_machine)] = 1;
|
||||
* can show us the size of struct tgsi_exec_machine at compile
|
||||
* time.
|
||||
*/
|
||||
#ifndef __cplusplus
|
||||
#ifdef _MSC_VER
|
||||
#define alignof _Alignof
|
||||
|
Reference in New Issue
Block a user