draw: Do not use LLVM's opaque types.
Contrary what the name may suggest, LLVM's opaque types are used for
recursive types -- types whose definition refers itself -- so opaque
types correspond to pre-declaring a structure in C. E.g.:
struct node;
struct link {
....
struct node *next;
};
struct node {
struct link link;
}
Void pointers are also disallowed by LLVM. So the suggested way of creating
what's commonly referred as "opaque pointers" is using byte pointer (i.e.,
uint8_t * ).
This commit is contained in:
@@ -220,7 +220,7 @@ create_jit_vertex_buffer_type(struct gallivm_state *gallivm)
|
||||
elem_types[0] =
|
||||
elem_types[1] =
|
||||
elem_types[2] = LLVMInt32TypeInContext(gallivm->context);
|
||||
elem_types[3] = LLVMPointerType(LLVMOpaqueTypeInContext(gallivm->context), 0); /* vs_constants */
|
||||
elem_types[3] = LLVMPointerType(LLVMInt8TypeInContext(gallivm->context), 0); /* vs_constants */
|
||||
|
||||
vb_type = LLVMStructTypeInContext(gallivm->context, elem_types,
|
||||
Elements(elem_types), 0);
|
||||
|
||||
Reference in New Issue
Block a user