From: José Fonseca Date: Mon, 24 Jan 2011 09:48:45 +0000 (+0000) Subject: draw: Do not use LLVM's opaque types. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=92badb4c8c6f603ff823d4aeb87c27582648ba6d;p=mesa.git 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 * ). --- diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 0c51aa85b37..a73bdd78087 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -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);