mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
ralloc/linalloc: allow adding custom code to LINEAR_ALLOC new operator
for GLSL IR Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Acked-by: Timothy Arceri <tarceri@itsqueeze.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36539>
This commit is contained in:
parent
4f2b8e7713
commit
ae5b168051
5 changed files with 13 additions and 9 deletions
|
|
@ -50,7 +50,7 @@ struct YYLTYPE;
|
|||
*/
|
||||
class ast_node {
|
||||
public:
|
||||
DECLARE_LINEAR_ZALLOC_CXX_OPERATORS(ast_node);
|
||||
DECLARE_LINEAR_ZALLOC_CXX_OPERATORS(ast_node,,);
|
||||
|
||||
/**
|
||||
* Print an AST node in something approximating the original GLSL code
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
class symbol_table_entry {
|
||||
public:
|
||||
DECLARE_LINEAR_ALLOC_CXX_OPERATORS(symbol_table_entry);
|
||||
DECLARE_LINEAR_ALLOC_CXX_OPERATORS(symbol_table_entry,,);
|
||||
|
||||
bool add_interface(const glsl_type *i, enum ir_variable_mode mode)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ private:
|
|||
};
|
||||
|
||||
struct acp {
|
||||
DECLARE_LINEAR_ALLOC_CXX_OPERATORS(acp);
|
||||
DECLARE_LINEAR_ALLOC_CXX_OPERATORS(acp,,);
|
||||
|
||||
struct rb_tree by_dst;
|
||||
struct rb_tree by_src;
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ private:
|
|||
};
|
||||
|
||||
struct acp {
|
||||
DECLARE_LINEAR_ALLOC_CXX_OPERATORS(acp);
|
||||
DECLARE_LINEAR_ALLOC_CXX_OPERATORS(acp,,);
|
||||
|
||||
struct rb_tree by_dst;
|
||||
struct rb_tree by_src;
|
||||
|
|
|
|||
|
|
@ -566,13 +566,14 @@ public: \
|
|||
DECLARE_RALLOC_CXX_OPERATORS_TEMPLATE(type, rzalloc_size)
|
||||
|
||||
|
||||
#define DECLARE_LINEAR_ALLOC_CXX_OPERATORS_TEMPLATE(TYPE, ALLOC_FUNC) \
|
||||
#define DECLARE_LINEAR_ALLOC_CXX_OPERATORS_TEMPLATE(TYPE, ALLOC_FUNC, new_cmd, new_array_cmd) \
|
||||
public: \
|
||||
static void* operator new(size_t size, linear_ctx *ctx) \
|
||||
{ \
|
||||
void *p = ALLOC_FUNC(ctx, size); \
|
||||
assert(p != NULL); \
|
||||
static_assert(HAS_TRIVIAL_DESTRUCTOR(TYPE)); \
|
||||
new_cmd \
|
||||
return p; \
|
||||
} \
|
||||
static void* operator new[](size_t size, linear_ctx *ctx) \
|
||||
|
|
@ -580,14 +581,17 @@ public: \
|
|||
void *p = ALLOC_FUNC(ctx, size); \
|
||||
assert(p != NULL); \
|
||||
static_assert(HAS_TRIVIAL_DESTRUCTOR(TYPE)); \
|
||||
new_array_cmd \
|
||||
return p; \
|
||||
}
|
||||
|
||||
#define DECLARE_LINEAR_ALLOC_CXX_OPERATORS(type) \
|
||||
DECLARE_LINEAR_ALLOC_CXX_OPERATORS_TEMPLATE(type, linear_alloc_child)
|
||||
#define DECLARE_LINEAR_ALLOC_CXX_OPERATORS(type, new_cmd, new_array_cmd) \
|
||||
DECLARE_LINEAR_ALLOC_CXX_OPERATORS_TEMPLATE(type, linear_alloc_child, \
|
||||
new_cmd, new_array_cmd)
|
||||
|
||||
#define DECLARE_LINEAR_ZALLOC_CXX_OPERATORS(type) \
|
||||
DECLARE_LINEAR_ALLOC_CXX_OPERATORS_TEMPLATE(type, linear_zalloc_child)
|
||||
#define DECLARE_LINEAR_ZALLOC_CXX_OPERATORS(type, new_cmd, new_array_cmd) \
|
||||
DECLARE_LINEAR_ALLOC_CXX_OPERATORS_TEMPLATE(type, linear_zalloc_child, \
|
||||
new_cmd, new_array_cmd)
|
||||
|
||||
typedef struct linear_ctx linear_ctx;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue