FreeBSD Bugzilla – Attachment 125300 Details for
Bug 168902
Make graphics/libGL compile with clang (using WITH_NEW_XORG)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
file.diff
file.diff (text/plain), 7.49 KB, created by
Dimitry Andric
on 2012-06-09 22:10:15 UTC
(
hide
)
Description:
file.diff
Filename:
MIME Type:
Creator:
Dimitry Andric
Created:
2012-06-09 22:10:15 UTC
Size:
7.49 KB
patch
obsolete
>Index: graphics/libGL/bsd.mesalib.mk >=================================================================== >RCS file: /home/mirror/ncvs/ports/graphics/libGL/bsd.mesalib.mk,v >retrieving revision 1.19 >diff -u -r1.19 bsd.mesalib.mk >--- graphics/libGL/bsd.mesalib.mk 21 Apr 2012 17:03:16 -0000 1.19 >+++ graphics/libGL/bsd.mesalib.mk 28 Apr 2012 16:49:02 -0000 >@@ -55,7 +55,9 @@ > .if defined(WITH_NEW_XORG) > EXTRA_PATCHES+= ${PATCHDIR}/extra-mach64_context.h \ > ${PATCHDIR}/extra-sis_context.h \ >- ${PATCHDIR}/extra-src-glsl_ir_constant_expression.cpp >+ ${PATCHDIR}/extra-src-glsl_ir_constant_expression.cpp \ >+ ${PATCHDIR}/extra-src__mesa__drivers__dri__nouveau__nouveau_array.c \ >+ ${PATCHDIR}/extra-src__mesa__drivers__dri__nouveau__nouveau_render_t.c > .else > EXTRA_PATCHES+= ${PATCHDIR}/extra-src__mesa__x86-64__glapi_x86-64.S \ > ${PATCHDIR}/extra-src__mesa__x86-64__xform4.S \ >Index: graphics/libGL/files/extra-src__mesa__drivers__dri__nouveau__nouveau_array.c >=================================================================== >RCS file: graphics/libGL/files/extra-src__mesa__drivers__dri__nouveau__nouveau_array.c >diff -N graphics/libGL/files/extra-src__mesa__drivers__dri__nouveau__nouveau_array.c >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ graphics/libGL/files/extra-src__mesa__drivers__dri__nouveau__nouveau_array.c 28 Apr 2012 16:49:02 -0000 >@@ -0,0 +1,99 @@ >+--- src/mesa/drivers/dri/nouveau/nouveau_array.c.orig 2011-01-06 01:19:15.000000000 +0100 >++++ src/mesa/drivers/dri/nouveau/nouveau_array.c 2012-04-28 18:27:06.000000000 +0200 >+@@ -29,54 +29,71 @@ >+ #include "nouveau_array.h" >+ #include "nouveau_bufferobj.h" >+ >++#define EXTRACT(in_t, out_t) extract_func_##in_t##_to_##out_t >++ >++#define EXTRACT_FUNC(in_t, out_t, k) \ >++static out_t EXTRACT(in_t, out_t) \ >++(struct nouveau_array *a, int i, int j) { \ >++ in_t x = ((in_t *)(a->buf + i * a->stride))[j]; \ >++ \ >++ return (out_t)x / (k); \ >++} >++ >++EXTRACT_FUNC(GLchar, unsigned, 1); >++EXTRACT_FUNC(GLchar, float, SCHAR_MAX); >++EXTRACT_FUNC(GLubyte, unsigned, 1); >++EXTRACT_FUNC(GLubyte, float, UCHAR_MAX); >++EXTRACT_FUNC(GLshort, unsigned, 1); >++EXTRACT_FUNC(GLshort, float, SHRT_MAX); >++EXTRACT_FUNC(GLushort, unsigned, 1); >++EXTRACT_FUNC(GLushort, float, USHRT_MAX); >++EXTRACT_FUNC(GLint, unsigned, 1); >++EXTRACT_FUNC(GLint, float, INT_MAX); >++EXTRACT_FUNC(GLuint, unsigned, 1); >++EXTRACT_FUNC(GLuint, float, UINT_MAX); >++EXTRACT_FUNC(GLfloat, unsigned, 1.0 / UINT_MAX); >++EXTRACT_FUNC(GLfloat, float, 1); >++ >++#undef EXTRACT_FUNC >++ >+ static void >+ get_array_extract(struct nouveau_array *a, extract_u_t *extract_u, >+ extract_f_t *extract_f) >+ { >+-#define EXTRACT(in_t, out_t, k) \ >+- ({ \ >+- auto out_t f(struct nouveau_array *, int, int); \ >+- out_t f(struct nouveau_array *a, int i, int j) { \ >+- in_t x = ((in_t *)(a->buf + i * a->stride))[j]; \ >+- \ >+- return (out_t)x / (k); \ >+- }; \ >+- f; \ >+- }); >+- >+ switch (a->type) { >+ case GL_BYTE: >+- *extract_u = EXTRACT(char, unsigned, 1); >+- *extract_f = EXTRACT(char, float, SCHAR_MAX); >++ *extract_u = EXTRACT(GLchar, unsigned); >++ *extract_f = EXTRACT(GLchar, float); >+ break; >+ case GL_UNSIGNED_BYTE: >+- *extract_u = EXTRACT(unsigned char, unsigned, 1); >+- *extract_f = EXTRACT(unsigned char, float, UCHAR_MAX); >++ *extract_u = EXTRACT(GLubyte, unsigned); >++ *extract_f = EXTRACT(GLubyte, float); >+ break; >+ case GL_SHORT: >+- *extract_u = EXTRACT(short, unsigned, 1); >+- *extract_f = EXTRACT(short, float, SHRT_MAX); >++ *extract_u = EXTRACT(GLshort, unsigned); >++ *extract_f = EXTRACT(GLshort, float); >+ break; >+ case GL_UNSIGNED_SHORT: >+- *extract_u = EXTRACT(unsigned short, unsigned, 1); >+- *extract_f = EXTRACT(unsigned short, float, USHRT_MAX); >++ *extract_u = EXTRACT(GLushort, unsigned); >++ *extract_f = EXTRACT(GLushort, float); >+ break; >+ case GL_INT: >+- *extract_u = EXTRACT(int, unsigned, 1); >+- *extract_f = EXTRACT(int, float, INT_MAX); >++ *extract_u = EXTRACT(GLint, unsigned); >++ *extract_f = EXTRACT(GLint, float); >+ break; >+ case GL_UNSIGNED_INT: >+- *extract_u = EXTRACT(unsigned int, unsigned, 1); >+- *extract_f = EXTRACT(unsigned int, float, UINT_MAX); >++ *extract_u = EXTRACT(GLuint, unsigned); >++ *extract_f = EXTRACT(GLuint, float); >+ break; >+ case GL_FLOAT: >+- *extract_u = EXTRACT(float, unsigned, 1.0 / UINT_MAX); >+- *extract_f = EXTRACT(float, float, 1); >++ *extract_u = EXTRACT(GLfloat, unsigned); >++ *extract_f = EXTRACT(GLfloat, float); >+ break; >+ default: >+ assert(0); >+ } >+ } >++#undef EXTRACT >+ >+ void >+ nouveau_init_array(struct nouveau_array *a, int attr, int stride, >Index: graphics/libGL/files/extra-src__mesa__drivers__dri__nouveau__nouveau_render_t.c >=================================================================== >RCS file: graphics/libGL/files/extra-src__mesa__drivers__dri__nouveau__nouveau_render_t.c >diff -N graphics/libGL/files/extra-src__mesa__drivers__dri__nouveau__nouveau_render_t.c >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ graphics/libGL/files/extra-src__mesa__drivers__dri__nouveau__nouveau_render_t.c 28 Apr 2012 16:49:02 -0000 >@@ -0,0 +1,91 @@ >+--- src/mesa/drivers/dri/nouveau/nouveau_render_t.c.orig 2011-01-06 01:19:34.000000000 +0100 >++++ src/mesa/drivers/dri/nouveau/nouveau_render_t.c 2012-04-28 18:27:06.000000000 +0200 >+@@ -97,52 +97,49 @@ >+ } \ >+ } while (0) >+ >+-/* >+- * Select an appropriate dispatch function for the given index buffer. >+- */ >+-static dispatch_t >+-get_array_dispatch(struct nouveau_array *a) >++static void >++dispatch_l(struct gl_context *ctx, unsigned int start, int delta, >++ unsigned int n) >+ { >+- if (!a->fields) { >+- auto void f(struct gl_context *, unsigned int, int, unsigned int); >+- >+- void f(struct gl_context *ctx, unsigned int start, int delta, >+- unsigned int n) { >+- struct nouveau_channel *chan = context_chan(ctx); >+- RENDER_LOCALS(ctx); >++ struct nouveau_channel *chan = context_chan(ctx); >++ RENDER_LOCALS(ctx); >+ >+- EMIT_VBO(L, ctx, start, delta, n); >+- }; >+- >+- return f; >+- >+- } else if (a->type == GL_UNSIGNED_INT) { >+- auto void f(struct gl_context *, unsigned int, int, unsigned int); >+- >+- void f(struct gl_context *ctx, unsigned int start, int delta, >+- unsigned int n) { >+- struct nouveau_channel *chan = context_chan(ctx); >+- RENDER_LOCALS(ctx); >++ EMIT_VBO(L, ctx, start, delta, n); >++} >+ >+- EMIT_VBO(I32, ctx, start, delta, n); >+- }; >++static void >++dispatch_i32(struct gl_context *ctx, unsigned int start, int delta, >++ unsigned int n) >++{ >++ struct nouveau_channel *chan = context_chan(ctx); >++ RENDER_LOCALS(ctx); >+ >+- return f; >++ EMIT_VBO(I32, ctx, start, delta, n); >++} >+ >+- } else { >+- auto void f(struct gl_context *, unsigned int, int, unsigned int); >++static void >++dispatch_i16(struct gl_context *ctx, unsigned int start, int delta, >++ unsigned int n) >++{ >++ struct nouveau_channel *chan = context_chan(ctx); >++ RENDER_LOCALS(ctx); >+ >+- void f(struct gl_context *ctx, unsigned int start, int delta, >+- unsigned int n) { >+- struct nouveau_channel *chan = context_chan(ctx); >+- RENDER_LOCALS(ctx); >+- >+- EMIT_VBO(I32, ctx, start, delta, n & 1); >+- EMIT_VBO(I16, ctx, start, delta, n & ~1); >+- }; >++ EMIT_VBO(I32, ctx, start, delta, n & 1); >++ EMIT_VBO(I16, ctx, start, delta, n & ~1); >++} >+ >+- return f; >+- } >++/* >++ * Select an appropriate dispatch function for the given index buffer. >++ */ >++static dispatch_t >++get_array_dispatch(struct nouveau_array *a) >++{ >++ if (!a->fields) >++ return dispatch_l; >++ else if (a->type == GL_UNSIGNED_INT) >++ return dispatch_i32; >++ else >++ return dispatch_i16; >+ } >+ >+ /*
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 168902
: 125300