Gallium-based OSMesa using SCons

"[email protected]" <[email protected]>
Newsgroups gmane.comp.video.mesa3d.user
Message-ID <FBBF3018AB84524BB1200765839BC4D7EF7A9E42@MAILSERVER.matbel.materialise.net>
Hi,

Based on what I could tell from the automake files, I puzzled together the pieces to add an scons build target for the new gallium-based OSMesa. Far from perfect no doubt, but it allows me to build a functional llvmpipe and/or softpipe-based standalone OSMesa dll on win32 and win64. I gave it a different name (osmesa_gallium) to avoid confusion with the traditional osmesa. The attached patch should apply against current master. Hope it is useful to others...

I'm not very familiar with either automake or scons, but if the patch can be made good enough for inclusion into master, let me know how :)

Regards,
Heinrich

_______________________________________________
mesa-users mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-users
scons-osmesa-gallium-2.patch (application/octet-stream, 30.9 KB)
From 793ca920c79e42d735383c30cc99800e78476a77 Mon Sep 17 00:00:00 2001
From: Heinrich Janzing <[email protected]>
Date: Tue, 17 Dec 2013 13:12:41 +0100
Subject: [PATCH] Add gallium-based OSMesa target to SConscript: osmesa_gallium

---
 src/gallium/SConscript                       |    4 +
 src/gallium/state_trackers/osmesa/SConscript |   30 +
 src/gallium/targets/osmesa/SConscript        |   37 +
 src/gallium/targets/osmesa/osmesa.def        | 1298 ++++++++++++++++++++++++++
 src/mesa/SConscript                          |   25 +
 5 files changed, 1394 insertions(+)
 create mode 100644 src/gallium/state_trackers/osmesa/SConscript
 create mode 100644 src/gallium/targets/osmesa/SConscript
 create mode 100644 src/gallium/targets/osmesa/osmesa.def

diff --git a/src/gallium/SConscript b/src/gallium/SConscript
index 6e27be2..a2577e2 100644
--- a/src/gallium/SConscript
+++ b/src/gallium/SConscript
@@ -34,6 +34,8 @@ if not env['msvc']:
 # Needed by some state trackers
 SConscript('winsys/sw/null/SConscript')
 
+SConscript('state_trackers/osmesa/SConscript')
+
 if not env['embedded']:
     SConscript('state_trackers/vega/SConscript')
     if env['platform'] not in ('cygwin', 'darwin', 'haiku', 'sunos'):
@@ -121,6 +123,7 @@ if not env['embedded']:
             'targets/haiku-softpipe/SConscript',
             'targets/libgl-haiku/SConscript',
         ])
+        
 
     if env['dri']:
         SConscript([
@@ -132,6 +135,7 @@ if not env['embedded']:
                 'targets/dri-i915/SConscript',
             ])
 
+SConscript(['targets/osmesa/SConscript'])
 
 #
 # Unit tests & tools
diff --git a/src/gallium/state_trackers/osmesa/SConscript b/src/gallium/state_trackers/osmesa/SConscript
new file mode 100644
index 0000000..9f9ec5d
--- /dev/null
+++ b/src/gallium/state_trackers/osmesa/SConscript
@@ -0,0 +1,30 @@
+import os
+
+Import('*')
+
+env = env.Clone()
+
+env.Append(CPPPATH = [
+    '#src/mapi',
+    '#src/mesa',
+    '.',
+])
+
+env.AppendUnique(CPPDEFINES = [
+    'GALLIUM_SOFTPIPE',
+    'GALLIUM_TRACE'
+])
+
+if env['llvm']:
+    env.AppendUnique(CPPDEFINES = 'GALLIUM_LLVMPIPE')
+
+sources = [
+    'osmesa.c'
+]
+
+osmesa_st = env.ConvenienceLibrary(
+    target ='osmesa_st',
+    source = sources,
+)
+
+Export('osmesa_st')
diff --git a/src/gallium/targets/osmesa/SConscript b/src/gallium/targets/osmesa/SConscript
new file mode 100644
index 0000000..5e26d6e
--- /dev/null
+++ b/src/gallium/targets/osmesa/SConscript
@@ -0,0 +1,37 @@
+#######################################################################
+# SConscript for osmesa
+
+Import('*')
+
+env = env.Clone()
+
+env.Append(CPPPATH = [
+    '#src/gallium/state_trackers/osmesa',
+    '#src/gallium/winsys/null',
+])
+
+sources = ['target.c']
+drivers = []
+
+env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE')
+drivers += [softpipe]
+
+if env['llvm']:
+    env.Append(CPPDEFINES = 'HAVE_LLVMPIPE')
+    env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
+    drivers += [llvmpipe]
+    
+drivers += [trace, rbug]
+
+if env['platform'] == 'windows':
+  env.Append(CPPDEFINES = 'BUILD_GL32')
+  env.Append(CPPDEFINES = '_GLAPI_NO_EXPORTS')
+  sources += ['osmesa.def']
+
+osmesa_gallium = env.SharedLibrary(
+    target ='osmesa_gallium',
+    source = sources,
+    LIBS = ws_null + glapi + mesagallium + drivers + gallium + glsl + osmesa_st + env['LIBS'],
+)
+
+env.Alias('osmesa_gallium', osmesa_gallium)
diff --git a/src/gallium/targets/osmesa/osmesa.def b/src/gallium/targets/osmesa/osmesa.def
new file mode 100644
index 0000000..826425b
--- /dev/null
+++ b/src/gallium/targets/osmesa/osmesa.def
@@ -0,0 +1,1298 @@
+EXPORTS
+	OSMesaColorClamp
+	OSMesaCreateContext
+	OSMesaCreateContextExt
+	OSMesaDestroyContext
+	OSMesaGetColorBuffer
+	OSMesaGetCurrentContext
+	OSMesaGetDepthBuffer
+	OSMesaGetIntegerv
+	OSMesaGetProcAddress
+	OSMesaMakeCurrent
+	OSMesaPixelStore
+	glAccum
+	glActiveProgramEXT
+	glActiveTexture
+	glActiveTextureARB
+	glAlphaFragmentOp1ATI
+	glAlphaFragmentOp2ATI
+	glAlphaFragmentOp3ATI
+	glAlphaFunc
+	glAreProgramsResidentNV
+	glAreTexturesResident
+	glAreTexturesResidentEXT
+	glArrayElement
+	glArrayElementEXT
+	glAttachObjectARB
+	glAttachShader
+	glBegin
+	glBeginConditionalRender
+	glBeginConditionalRenderNV
+	glBeginFragmentShaderATI
+	glBeginQuery
+	glBeginQueryARB
+	glBeginQueryIndexed
+	glBeginTransformFeedback
+	glBeginTransformFeedbackEXT
+	glBindAttribLocation
+	glBindAttribLocationARB
+	glBindBuffer
+	glBindBufferARB
+	glBindBufferBase
+	glBindBufferBaseEXT
+	glBindBufferOffsetEXT
+	glBindBufferRange
+	glBindBufferRangeEXT
+	glBindFragDataLocation
+	glBindFragDataLocationEXT
+	glBindFragDataLocationIndexed
+	glBindFragmentShaderATI
+	glBindFramebuffer
+	glBindFramebufferEXT
+	glBindProgramARB
+	glBindProgramNV
+	glBindRenderbuffer
+	glBindRenderbufferEXT
+	glBindSampler
+	glBindTexture
+	glBindTextureEXT
+	glBindTransformFeedback
+	glBindVertexArray
+	glBitmap
+	glBlendColor
+	glBlendColorEXT
+	glBlendEquation
+	glBlendEquationEXT
+	glBlendEquationIndexedAMD
+	glBlendEquationSeparate
+	glBlendEquationSeparateIndexedAMD
+	glBlendEquationSeparateiARB
+	glBlendEquationiARB
+	glBlendFunc
+	glBlendFuncIndexedAMD
+	glBlendFuncSeparate
+	glBlendFuncSeparateEXT
+	glBlendFuncSeparateIndexedAMD
+	glBlendFuncSeparateiARB
+	glBlendFunciARB
+	glBlitFramebuffer
+	glBufferData
+	glBufferDataARB
+	glBufferSubData
+	glBufferSubDataARB
+	glCallList
+	glCallLists
+	glCheckFramebufferStatus
+	glCheckFramebufferStatusEXT
+	glClampColor
+	glClampColorARB
+	glClear
+	glClearAccum
+	glClearBufferfi
+	glClearBufferfv
+	glClearBufferiv
+	glClearBufferuiv
+	glClearColor
+	glClearColorIiEXT
+	glClearColorIuiEXT
+	glClearDepth
+	glClearDepthf
+	glClearIndex
+	glClearStencil
+	glClientActiveTexture
+	glClientActiveTextureARB
+	glClientWaitSync
+	glClipPlane
+	glColor3b
+	glColor3bv
+	glColor3d
+	glColor3dv
+	glColor3f
+	glColor3fv
+	glColor3i
+	glColor3iv
+	glColor3s
+	glColor3sv
+	glColor3ub
+	glColor3ubv
+	glColor3ui
+	glColor3uiv
+	glColor3us
+	glColor3usv
+	glColor4b
+	glColor4bv
+	glColor4d
+	glColor4dv
+	glColor4f
+	glColor4fv
+	glColor4i
+	glColor4iv
+	glColor4s
+	glColor4sv
+	glColor4ub
+	glColor4ubv
+	glColor4ui
+	glColor4uiv
+	glColor4us
+	glColor4usv
+	glColorFragmentOp1ATI
+	glColorFragmentOp2ATI
+	glColorFragmentOp3ATI
+	glColorMask
+	glColorMaskIndexedEXT
+	glColorMaski
+	glColorMaterial
+	glColorP3ui
+	glColorP3uiv
+	glColorP4ui
+	glColorP4uiv
+	glColorPointer
+	glColorPointerEXT
+	glColorSubTable
+	glColorTable
+	glColorTableEXT
+	glColorTableParameterfv
+	glColorTableParameteriv
+	glCompileShader
+	glCompileShaderARB
+	glCompressedTexImage1D
+	glCompressedTexImage1DARB
+	glCompressedTexImage2D
+	glCompressedTexImage2DARB
+	glCompressedTexImage3D
+	glCompressedTexImage3DARB
+	glCompressedTexSubImage1D
+	glCompressedTexSubImage1DARB
+	glCompressedTexSubImage2D
+	glCompressedTexSubImage2DARB
+	glCompressedTexSubImage3D
+	glCompressedTexSubImage3DARB
+	glConvolutionFilter1D
+	glConvolutionFilter2D
+	glConvolutionParameterf
+	glConvolutionParameterfv
+	glConvolutionParameteri
+	glConvolutionParameteriv
+	glCopyBufferSubData
+	glCopyColorSubTable
+	glCopyColorTable
+	glCopyConvolutionFilter1D
+	glCopyConvolutionFilter2D
+	glCopyPixels
+	glCopyTexImage1D
+	glCopyTexImage1DEXT
+	glCopyTexImage2D
+	glCopyTexImage2DEXT
+	glCopyTexSubImage1D
+	glCopyTexSubImage1DEXT
+	glCopyTexSubImage2D
+	glCopyTexSubImage2DEXT
+	glCopyTexSubImage3D
+	glCopyTexSubImage3DEXT
+	glCreateProgram
+	glCreateProgramObjectARB
+	glCreateShader
+	glCreateShaderObjectARB
+	glCreateShaderProgramEXT
+	glCullFace
+	glDebugMessageCallbackARB
+	glDebugMessageControlARB
+	glDebugMessageInsertARB
+	glDeleteBuffers
+	glDeleteBuffersARB
+	glDeleteFragmentShaderATI
+	glDeleteFramebuffers
+	glDeleteFramebuffersEXT
+	glDeleteLists
+	glDeleteObjectARB
+	glDeleteProgram
+	glDeleteProgramsARB
+	glDeleteProgramsNV
+	glDeleteQueries
+	glDeleteQueriesARB
+	glDeleteRenderbuffers
+	glDeleteRenderbuffersEXT
+	glDeleteSamplers
+	glDeleteShader
+	glDeleteSync
+	glDeleteTextures
+	glDeleteTexturesEXT
+	glDeleteTransformFeedbacks
+	glDeleteVertexArrays
+	glDepthFunc
+	glDepthMask
+	glDepthRange
+	glDepthRangef
+	glDetachObjectARB
+	glDetachShader
+	glDisable
+	glDisableClientState
+	glDisableIndexedEXT
+	glDisableVertexAttribArray
+	glDisableVertexAttribArrayARB
+	glDisablei
+	glDrawArrays
+	glDrawArraysEXT
+	glDrawArraysInstanced
+	glDrawArraysInstancedARB
+	glDrawArraysInstancedBaseInstance
+	glDrawArraysInstancedEXT
+	glDrawBuffer
+	glDrawBuffers
+	glDrawBuffersARB
+	glDrawBuffersATI
+	glDrawElements
+	glDrawElementsBaseVertex
+	glDrawElementsInstanced
+	glDrawElementsInstancedARB
+	glDrawElementsInstancedBaseInstance
+	glDrawElementsInstancedBaseVertex
+	glDrawElementsInstancedBaseVertexBaseInstance
+	glDrawElementsInstancedEXT
+	glDrawPixels
+	glDrawRangeElements
+	glDrawRangeElementsBaseVertex
+	glDrawRangeElementsEXT
+	glDrawTransformFeedback
+	glDrawTransformFeedbackInstanced
+	glDrawTransformFeedbackStream
+	glDrawTransformFeedbackStreamInstanced
+	glEGLImageTargetRenderbufferStorageOES
+	glEGLImageTargetTexture2DOES
+	glEdgeFlag
+	glEdgeFlagPointer
+	glEdgeFlagPointerEXT
+	glEdgeFlagv
+	glEnable
+	glEnableClientState
+	glEnableIndexedEXT
+	glEnableVertexAttribArray
+	glEnableVertexAttribArrayARB
+	glEnablei
+	glEnd
+	glEndConditionalRender
+	glEndConditionalRenderNV
+	glEndFragmentShaderATI
+	glEndList
+	glEndQuery
+	glEndQueryARB
+	glEndQueryIndexed
+	glEndTransformFeedback
+	glEndTransformFeedbackEXT
+	glEvalCoord1d
+	glEvalCoord1dv
+	glEvalCoord1f
+	glEvalCoord1fv
+	glEvalCoord2d
+	glEvalCoord2dv
+	glEvalCoord2f
+	glEvalCoord2fv
+	glEvalMesh1
+	glEvalMesh2
+	glEvalPoint1
+	glEvalPoint2
+	glExecuteProgramNV
+	glFeedbackBuffer
+	glFenceSync
+	glFinish
+	glFlush
+	glFlushMappedBufferRange
+	glFogCoordPointer
+	glFogCoordPointerEXT
+	glFogCoordd
+	glFogCoorddEXT
+	glFogCoorddv
+	glFogCoorddvEXT
+	glFogCoordf
+	glFogCoordfEXT
+	glFogCoordfv
+	glFogCoordfvEXT
+	glFogf
+	glFogfv
+	glFogi
+	glFogiv
+	glFramebufferRenderbuffer
+	glFramebufferRenderbufferEXT
+	glFramebufferTexture
+	glFramebufferTexture1D
+	glFramebufferTexture1DEXT
+	glFramebufferTexture2D
+	glFramebufferTexture2DEXT
+	glFramebufferTexture3D
+	glFramebufferTexture3DEXT
+	glFramebufferTextureARB
+	glFramebufferTextureFaceARB
+	glFramebufferTextureLayer
+	glFramebufferTextureLayerARB
+	glFramebufferTextureLayerEXT
+	glFrontFace
+	glFrustum
+	glGenBuffers
+	glGenBuffersARB
+	glGenFragmentShadersATI
+	glGenFramebuffers
+	glGenFramebuffersEXT
+	glGenLists
+	glGenProgramsARB
+	glGenProgramsNV
+	glGenQueries
+	glGenQueriesARB
+	glGenRenderbuffers
+	glGenRenderbuffersEXT
+	glGenSamplers
+	glGenTextures
+	glGenTexturesEXT
+	glGenTransformFeedbacks
+	glGenVertexArrays
+	glGenerateMipmap
+	glGenerateMipmapEXT
+	glGetActiveAttrib
+	glGetActiveAttribARB
+	glGetActiveUniform
+	glGetActiveUniformARB
+	glGetActiveUniformBlockName
+	glGetActiveUniformBlockiv
+	glGetActiveUniformName
+	glGetActiveUniformsiv
+	glGetAttachedObjectsARB
+	glGetAttachedShaders
+	glGetAttribLocation
+	glGetAttribLocationARB
+	glGetBooleanIndexedvEXT
+	glGetBooleani_v
+	glGetBooleanv
+	glGetBufferParameteri64v
+	glGetBufferParameteriv
+	glGetBufferParameterivARB
+	glGetBufferPointerv
+	glGetBufferPointervARB
+	glGetBufferSubData
+	glGetBufferSubDataARB
+	glGetClipPlane
+	glGetColorTable
+	glGetColorTableEXT
+	glGetColorTableParameterfv
+	glGetColorTableParameterfvEXT
+	glGetColorTableParameteriv
+	glGetColorTableParameterivEXT
+	glGetCompressedTexImage
+	glGetCompressedTexImageARB
+	glGetConvolutionFilter
+	glGetConvolutionParameterfv
+	glGetConvolutionParameteriv
+	glGetDebugMessageLogARB
+	glGetDoublev
+	glGetError
+	glGetFloatv
+	glGetFragDataIndex
+	glGetFragDataLocation
+	glGetFragDataLocationEXT
+	glGetFramebufferAttachmentParameteriv
+	glGetFramebufferAttachmentParameterivEXT
+	glGetGraphicsResetStatusARB
+	glGetHandleARB
+	glGetHistogram
+	glGetHistogramParameterfv
+	glGetHistogramParameteriv
+	glGetInfoLogARB
+	glGetInteger64i_v
+	glGetInteger64v
+	glGetIntegerIndexedvEXT
+	glGetIntegeri_v
+	glGetIntegerv
+	glGetLightfv
+	glGetLightiv
+	glGetMapdv
+	glGetMapfv
+	glGetMapiv
+	glGetMaterialfv
+	glGetMaterialiv
+	glGetMinmax
+	glGetMinmaxParameterfv
+	glGetMinmaxParameteriv
+	glGetMultisamplefv
+	glGetObjectParameterfvARB
+	glGetObjectParameterivAPPLE
+	glGetObjectParameterivARB
+	glGetPixelMapfv
+	glGetPixelMapuiv
+	glGetPixelMapusv
+	glGetPointerv
+	glGetPointervEXT
+	glGetPolygonStipple
+	glGetProgramBinary
+	glGetProgramEnvParameterdvARB
+	glGetProgramEnvParameterfvARB
+	glGetProgramInfoLog
+	glGetProgramLocalParameterdvARB
+	glGetProgramLocalParameterfvARB
+	glGetProgramNamedParameterdvNV
+	glGetProgramNamedParameterfvNV
+	glGetProgramParameterdvNV
+	glGetProgramParameterfvNV
+	glGetProgramStringARB
+	glGetProgramStringNV
+	glGetProgramiv
+	glGetProgramivARB
+	glGetProgramivNV
+	glGetQueryIndexediv
+	glGetQueryObjectiv
+	glGetQueryObjectivARB
+	glGetQueryObjectuiv
+	glGetQueryObjectuivARB
+	glGetQueryiv
+	glGetQueryivARB
+	glGetRenderbufferParameteriv
+	glGetRenderbufferParameterivEXT
+	glGetSamplerParameterIiv
+	glGetSamplerParameterIuiv
+	glGetSamplerParameterfv
+	glGetSamplerParameteriv
+	glGetSeparableFilter
+	glGetShaderInfoLog
+	glGetShaderPrecisionFormat
+	glGetShaderSource
+	glGetShaderSourceARB
+	glGetShaderiv
+	glGetString
+	glGetStringi
+	glGetSynciv
+	glGetTexBumpParameterfvATI
+	glGetTexBumpParameterivATI
+	glGetTexEnvfv
+	glGetTexEnviv
+	glGetTexGendv
+	glGetTexGenfv
+	glGetTexGeniv
+	glGetTexImage
+	glGetTexLevelParameterfv
+	glGetTexLevelParameteriv
+	glGetTexParameterIiv
+	glGetTexParameterIivEXT
+	glGetTexParameterIuiv
+	glGetTexParameterIuivEXT
+	glGetTexParameterfv
+	glGetTexParameteriv
+	glGetTrackMatrixivNV
+	glGetTransformFeedbackVarying
+	glGetTransformFeedbackVaryingEXT
+	glGetUniformBlockIndex
+	glGetUniformIndices
+	glGetUniformLocation
+	glGetUniformLocationARB
+	glGetUniformfv
+	glGetUniformfvARB
+	glGetUniformiv
+	glGetUniformivARB
+	glGetUniformuiv
+	glGetUniformuivEXT
+	glGetVertexAttribIiv
+	glGetVertexAttribIivEXT
+	glGetVertexAttribIuiv
+	glGetVertexAttribIuivEXT
+	glGetVertexAttribPointerv
+	glGetVertexAttribPointervARB
+	glGetVertexAttribPointervNV
+	glGetVertexAttribdv
+	glGetVertexAttribdvARB
+	glGetVertexAttribdvNV
+	glGetVertexAttribfv
+	glGetVertexAttribfvARB
+	glGetVertexAttribfvNV
+	glGetVertexAttribiv
+	glGetVertexAttribivARB
+	glGetVertexAttribivNV
+	glGetnColorTableARB
+	glGetnCompressedTexImageARB
+	glGetnConvolutionFilterARB
+	glGetnHistogramARB
+	glGetnMapdvARB
+	glGetnMapfvARB
+	glGetnMapivARB
+	glGetnMinmaxARB
+	glGetnPixelMapfvARB
+	glGetnPixelMapuivARB
+	glGetnPixelMapusvARB
+	glGetnPolygonStippleARB
+	glGetnSeparableFilterARB
+	glGetnTexImageARB
+	glGetnUniformdvARB
+	glGetnUniformfvARB
+	glGetnUniformivARB
+	glGetnUniformuivARB
+	glHint
+	glHistogram
+	glIndexMask
+	glIndexPointer
+	glIndexPointerEXT
+	glIndexd
+	glIndexdv
+	glIndexf
+	glIndexfv
+	glIndexi
+	glIndexiv
+	glIndexs
+	glIndexsv
+	glIndexub
+	glIndexubv
+	glInitNames
+	glInterleavedArrays
+	glInvalidateBufferData
+	glInvalidateBufferSubData
+	glInvalidateFramebuffer
+	glInvalidateSubFramebuffer
+	glInvalidateTexImage
+	glInvalidateTexSubImage
+	glIsBuffer
+	glIsBufferARB
+	glIsEnabled
+	glIsEnabledIndexedEXT
+	glIsEnabledi
+	glIsFramebuffer
+	glIsFramebufferEXT
+	glIsList
+	glIsProgram
+	glIsProgramARB
+	glIsProgramNV
+	glIsQuery
+	glIsQueryARB
+	glIsRenderbuffer
+	glIsRenderbufferEXT
+	glIsSampler
+	glIsShader
+	glIsSync
+	glIsTexture
+	glIsTextureEXT
+	glIsTransformFeedback
+	glIsVertexArray
+	glLightModelf
+	glLightModelfv
+	glLightModeli
+	glLightModeliv
+	glLightf
+	glLightfv
+	glLighti
+	glLightiv
+	glLineStipple
+	glLineWidth
+	glLinkProgram
+	glLinkProgramARB
+	glListBase
+	glLoadIdentity
+	glLoadMatrixd
+	glLoadMatrixf
+	glLoadName
+	glLoadProgramNV
+	glLoadTransposeMatrixd
+	glLoadTransposeMatrixdARB
+	glLoadTransposeMatrixf
+	glLoadTransposeMatrixfARB
+	glLockArraysEXT
+	glLogicOp
+	glMap1d
+	glMap1f
+	glMap2d
+	glMap2f
+	glMapBuffer
+	glMapBufferARB
+	glMapBufferRange
+	glMapGrid1d
+	glMapGrid1f
+	glMapGrid2d
+	glMapGrid2f
+	glMaterialf
+	glMaterialfv
+	glMateriali
+	glMaterialiv
+	glMatrixMode
+	glMinmax
+	glMultMatrixd
+	glMultMatrixf
+	glMultTransposeMatrixd
+	glMultTransposeMatrixdARB
+	glMultTransposeMatrixf
+	glMultTransposeMatrixfARB
+	glMultiDrawArrays
+	glMultiDrawArraysEXT
+	glMultiDrawElements
+	glMultiDrawElementsBaseVertex
+	glMultiDrawElementsEXT
+	glMultiTexCoord1d
+	glMultiTexCoord1dARB
+	glMultiTexCoord1dv
+	glMultiTexCoord1dvARB
+	glMultiTexCoord1f
+	glMultiTexCoord1fARB
+	glMultiTexCoord1fv
+	glMultiTexCoord1fvARB
+	glMultiTexCoord1i
+	glMultiTexCoord1iARB
+	glMultiTexCoord1iv
+	glMultiTexCoord1ivARB
+	glMultiTexCoord1s
+	glMultiTexCoord1sARB
+	glMultiTexCoord1sv
+	glMultiTexCoord1svARB
+	glMultiTexCoord2d
+	glMultiTexCoord2dARB
+	glMultiTexCoord2dv
+	glMultiTexCoord2dvARB
+	glMultiTexCoord2f
+	glMultiTexCoord2fARB
+	glMultiTexCoord2fv
+	glMultiTexCoord2fvARB
+	glMultiTexCoord2i
+	glMultiTexCoord2iARB
+	glMultiTexCoord2iv
+	glMultiTexCoord2ivARB
+	glMultiTexCoord2s
+	glMultiTexCoord2sARB
+	glMultiTexCoord2sv
+	glMultiTexCoord2svARB
+	glMultiTexCoord3d
+	glMultiTexCoord3dARB
+	glMultiTexCoord3dv
+	glMultiTexCoord3dvARB
+	glMultiTexCoord3f
+	glMultiTexCoord3fARB
+	glMultiTexCoord3fv
+	glMultiTexCoord3fvARB
+	glMultiTexCoord3i
+	glMultiTexCoord3iARB
+	glMultiTexCoord3iv
+	glMultiTexCoord3ivARB
+	glMultiTexCoord3s
+	glMultiTexCoord3sARB
+	glMultiTexCoord3sv
+	glMultiTexCoord3svARB
+	glMultiTexCoord4d
+	glMultiTexCoord4dARB
+	glMultiTexCoord4dv
+	glMultiTexCoord4dvARB
+	glMultiTexCoord4f
+	glMultiTexCoord4fARB
+	glMultiTexCoord4fv
+	glMultiTexCoord4fvARB
+	glMultiTexCoord4i
+	glMultiTexCoord4iARB
+	glMultiTexCoord4iv
+	glMultiTexCoord4ivARB
+	glMultiTexCoord4s
+	glMultiTexCoord4sARB
+	glMultiTexCoord4sv
+	glMultiTexCoord4svARB
+	glMultiTexCoordP1ui
+	glMultiTexCoordP1uiv
+	glMultiTexCoordP2ui
+	glMultiTexCoordP2uiv
+	glMultiTexCoordP3ui
+	glMultiTexCoordP3uiv
+	glMultiTexCoordP4ui
+	glMultiTexCoordP4uiv
+	glNewList
+	glNormal3b
+	glNormal3bv
+	glNormal3d
+	glNormal3dv
+	glNormal3f
+	glNormal3fv
+	glNormal3i
+	glNormal3iv
+	glNormal3s
+	glNormal3sv
+	glNormalP3ui
+	glNormalP3uiv
+	glNormalPointer
+	glNormalPointerEXT
+	glObjectPurgeableAPPLE
+	glObjectUnpurgeableAPPLE
+	glOrtho
+	glPassTexCoordATI
+	glPassThrough
+	glPauseTransformFeedback
+	glPixelMapfv
+	glPixelMapuiv
+	glPixelMapusv
+	glPixelStoref
+	glPixelStorei
+	glPixelTransferf
+	glPixelTransferi
+	glPixelZoom
+	glPointParameterf
+	glPointParameterfARB
+	glPointParameterfEXT
+	glPointParameterfv
+	glPointParameterfvARB
+	glPointParameterfvEXT
+	glPointParameteri
+	glPointParameteriNV
+	glPointParameteriv
+	glPointParameterivNV
+	glPointSize
+	glPolygonMode
+	glPolygonOffset
+	glPolygonOffsetEXT
+	glPolygonStipple
+	glPopAttrib
+	glPopClientAttrib
+	glPopMatrix
+	glPopName
+	glPrimitiveRestartIndex
+	glPrimitiveRestartIndexNV
+	glPrimitiveRestartNV
+	glPrioritizeTextures
+	glPrioritizeTexturesEXT
+	glProgramBinary
+	glProgramEnvParameter4dARB
+	glProgramEnvParameter4dvARB
+	glProgramEnvParameter4fARB
+	glProgramEnvParameter4fvARB
+	glProgramLocalParameter4dARB
+	glProgramLocalParameter4dvARB
+	glProgramLocalParameter4fARB
+	glProgramLocalParameter4fvARB
+	glProgramNamedParameter4dNV
+	glProgramNamedParameter4dvNV
+	glProgramNamedParameter4fNV
+	glProgramNamedParameter4fvNV
+	glProgramParameter4dNV
+	glProgramParameter4dvNV
+	glProgramParameter4fNV
+	glProgramParameter4fvNV
+	glProgramParameteri
+	glProgramParameteriARB
+	glProgramParameters4dvNV
+	glProgramParameters4fvNV
+	glProgramStringARB
+	glProvokingVertex
+	glProvokingVertexEXT
+	glPushAttrib
+	glPushClientAttrib
+	glPushMatrix
+	glPushName
+	glRasterPos2d
+	glRasterPos2dv
+	glRasterPos2f
+	glRasterPos2fv
+	glRasterPos2i
+	glRasterPos2iv
+	glRasterPos2s
+	glRasterPos2sv
+	glRasterPos3d
+	glRasterPos3dv
+	glRasterPos3f
+	glRasterPos3fv
+	glRasterPos3i
+	glRasterPos3iv
+	glRasterPos3s
+	glRasterPos3sv
+	glRasterPos4d
+	glRasterPos4dv
+	glRasterPos4f
+	glRasterPos4fv
+	glRasterPos4i
+	glRasterPos4iv
+	glRasterPos4s
+	glRasterPos4sv
+	glReadBuffer
+	glReadPixels
+	glReadnPixelsARB
+	glRectd
+	glRectdv
+	glRectf
+	glRectfv
+	glRecti
+	glRectiv
+	glRects
+	glRectsv
+	glReleaseShaderCompiler
+	glRenderMode
+	glRenderbufferStorage
+	glRenderbufferStorageEXT
+	glRenderbufferStorageMultisample
+	glRenderbufferStorageMultisampleEXT
+	glRequestResidentProgramsNV
+	glResetHistogram
+	glResetMinmax
+	glResizeBuffersMESA
+	glResumeTransformFeedback
+	glRotated
+	glRotatef
+	glSampleCoverage
+	glSampleCoverageARB
+	glSampleMapATI
+	glSampleMaski
+	glSamplerParameterIiv
+	glSamplerParameterIuiv
+	glSamplerParameterf
+	glSamplerParameterfv
+	glSamplerParameteri
+	glSamplerParameteriv
+	glScaled
+	glScalef
+	glScissor
+	glSecondaryColor3b
+	glSecondaryColor3bEXT
+	glSecondaryColor3bv
+	glSecondaryColor3bvEXT
+	glSecondaryColor3d
+	glSecondaryColor3dEXT
+	glSecondaryColor3dv
+	glSecondaryColor3dvEXT
+	glSecondaryColor3f
+	glSecondaryColor3fEXT
+	glSecondaryColor3fv
+	glSecondaryColor3fvEXT
+	glSecondaryColor3i
+	glSecondaryColor3iEXT
+	glSecondaryColor3iv
+	glSecondaryColor3ivEXT
+	glSecondaryColor3s
+	glSecondaryColor3sEXT
+	glSecondaryColor3sv
+	glSecondaryColor3svEXT
+	glSecondaryColor3ub
+	glSecondaryColor3ubEXT
+	glSecondaryColor3ubv
+	glSecondaryColor3ubvEXT
+	glSecondaryColor3ui
+	glSecondaryColor3uiEXT
+	glSecondaryColor3uiv
+	glSecondaryColor3uivEXT
+	glSecondaryColor3us
+	glSecondaryColor3usEXT
+	glSecondaryColor3usv
+	glSecondaryColor3usvEXT
+	glSecondaryColorP3ui
+	glSecondaryColorP3uiv
+	glSecondaryColorPointer
+	glSecondaryColorPointerEXT
+	glSelectBuffer
+	glSeparableFilter2D
+	glSetFragmentShaderConstantATI
+	glShadeModel
+	glShaderBinary
+	glShaderSource
+	glShaderSourceARB
+	glStencilFunc
+	glStencilFuncSeparate
+	glStencilMask
+	glStencilMaskSeparate
+	glStencilOp
+	glStencilOpSeparate
+	glTexBuffer
+	glTexBufferARB
+	glTexBufferRange
+	glTexBumpParameterfvATI
+	glTexBumpParameterivATI
+	glTexCoord1d
+	glTexCoord1dv
+	glTexCoord1f
+	glTexCoord1fv
+	glTexCoord1i
+	glTexCoord1iv
+	glTexCoord1s
+	glTexCoord1sv
+	glTexCoord2d
+	glTexCoord2dv
+	glTexCoord2f
+	glTexCoord2fv
+	glTexCoord2i
+	glTexCoord2iv
+	glTexCoord2s
+	glTexCoord2sv
+	glTexCoord3d
+	glTexCoord3dv
+	glTexCoord3f
+	glTexCoord3fv
+	glTexCoord3i
+	glTexCoord3iv
+	glTexCoord3s
+	glTexCoord3sv
+	glTexCoord4d
+	glTexCoord4dv
+	glTexCoord4f
+	glTexCoord4fv
+	glTexCoord4i
+	glTexCoord4iv
+	glTexCoord4s
+	glTexCoord4sv
+	glTexCoordP1ui
+	glTexCoordP1uiv
+	glTexCoordP2ui
+	glTexCoordP2uiv
+	glTexCoordP3ui
+	glTexCoordP3uiv
+	glTexCoordP4ui
+	glTexCoordP4uiv
+	glTexCoordPointer
+	glTexCoordPointerEXT
+	glTexEnvf
+	glTexEnvfv
+	glTexEnvi
+	glTexEnviv
+	glTexGend
+	glTexGendv
+	glTexGenf
+	glTexGenfv
+	glTexGeni
+	glTexGeniv
+	glTexImage1D
+	glTexImage2D
+	glTexImage2DMultisample
+	glTexImage3D
+	glTexImage3DEXT
+	glTexImage3DMultisample
+	glTexParameterIiv
+	glTexParameterIivEXT
+	glTexParameterIuiv
+	glTexParameterIuivEXT
+	glTexParameterf
+	glTexParameterfv
+	glTexParameteri
+	glTexParameteriv
+	glTexStorage1D
+	glTexStorage2D
+	glTexStorage2DMultisample
+	glTexStorage3D
+	glTexStorage3DMultisample
+	glTexSubImage1D
+	glTexSubImage1DEXT
+	glTexSubImage2D
+	glTexSubImage2DEXT
+	glTexSubImage3D
+	glTexSubImage3DEXT
+	glTextureBarrierNV
+	glTextureStorage1DEXT
+	glTextureStorage2DEXT
+	glTextureStorage3DEXT
+	glTrackMatrixNV
+	glTransformFeedbackVaryings
+	glTransformFeedbackVaryingsEXT
+	glTranslated
+	glTranslatef
+	glUniform1f
+	glUniform1fARB
+	glUniform1fv
+	glUniform1fvARB
+	glUniform1i
+	glUniform1iARB
+	glUniform1iv
+	glUniform1ivARB
+	glUniform1ui
+	glUniform1uiEXT
+	glUniform1uiv
+	glUniform1uivEXT
+	glUniform2f
+	glUniform2fARB
+	glUniform2fv
+	glUniform2fvARB
+	glUniform2i
+	glUniform2iARB
+	glUniform2iv
+	glUniform2ivARB
+	glUniform2ui
+	glUniform2uiEXT
+	glUniform2uiv
+	glUniform2uivEXT
+	glUniform3f
+	glUniform3fARB
+	glUniform3fv
+	glUniform3fvARB
+	glUniform3i
+	glUniform3iARB
+	glUniform3iv
+	glUniform3ivARB
+	glUniform3ui
+	glUniform3uiEXT
+	glUniform3uiv
+	glUniform3uivEXT
+	glUniform4f
+	glUniform4fARB
+	glUniform4fv
+	glUniform4fvARB
+	glUniform4i
+	glUniform4iARB
+	glUniform4iv
+	glUniform4ivARB
+	glUniform4ui
+	glUniform4uiEXT
+	glUniform4uiv
+	glUniform4uivEXT
+	glUniformBlockBinding
+	glUniformMatrix2fv
+	glUniformMatrix2fvARB
+	glUniformMatrix2x3fv
+	glUniformMatrix2x4fv
+	glUniformMatrix3fv
+	glUniformMatrix3fvARB
+	glUniformMatrix3x2fv
+	glUniformMatrix3x4fv
+	glUniformMatrix4fv
+	glUniformMatrix4fvARB
+	glUniformMatrix4x2fv
+	glUniformMatrix4x3fv
+	glUnlockArraysEXT
+	glUnmapBuffer
+	glUnmapBufferARB
+	glUseProgram
+	glUseProgramObjectARB
+	glUseShaderProgramEXT
+	glValidateProgram
+	glValidateProgramARB
+	glVertex2d
+	glVertex2dv
+	glVertex2f
+	glVertex2fv
+	glVertex2i
+	glVertex2iv
+	glVertex2s
+	glVertex2sv
+	glVertex3d
+	glVertex3dv
+	glVertex3f
+	glVertex3fv
+	glVertex3i
+	glVertex3iv
+	glVertex3s
+	glVertex3sv
+	glVertex4d
+	glVertex4dv
+	glVertex4f
+	glVertex4fv
+	glVertex4i
+	glVertex4iv
+	glVertex4s
+	glVertex4sv
+	glVertexAttrib1d
+	glVertexAttrib1dARB
+	glVertexAttrib1dNV
+	glVertexAttrib1dv
+	glVertexAttrib1dvARB
+	glVertexAttrib1dvNV
+	glVertexAttrib1f
+	glVertexAttrib1fARB
+	glVertexAttrib1fNV
+	glVertexAttrib1fv
+	glVertexAttrib1fvARB
+	glVertexAttrib1fvNV
+	glVertexAttrib1s
+	glVertexAttrib1sARB
+	glVertexAttrib1sNV
+	glVertexAttrib1sv
+	glVertexAttrib1svARB
+	glVertexAttrib1svNV
+	glVertexAttrib2d
+	glVertexAttrib2dARB
+	glVertexAttrib2dNV
+	glVertexAttrib2dv
+	glVertexAttrib2dvARB
+	glVertexAttrib2dvNV
+	glVertexAttrib2f
+	glVertexAttrib2fARB
+	glVertexAttrib2fNV
+	glVertexAttrib2fv
+	glVertexAttrib2fvARB
+	glVertexAttrib2fvNV
+	glVertexAttrib2s
+	glVertexAttrib2sARB
+	glVertexAttrib2sNV
+	glVertexAttrib2sv
+	glVertexAttrib2svARB
+	glVertexAttrib2svNV
+	glVertexAttrib3d
+	glVertexAttrib3dARB
+	glVertexAttrib3dNV
+	glVertexAttrib3dv
+	glVertexAttrib3dvARB
+	glVertexAttrib3dvNV
+	glVertexAttrib3f
+	glVertexAttrib3fARB
+	glVertexAttrib3fNV
+	glVertexAttrib3fv
+	glVertexAttrib3fvARB
+	glVertexAttrib3fvNV
+	glVertexAttrib3s
+	glVertexAttrib3sARB
+	glVertexAttrib3sNV
+	glVertexAttrib3sv
+	glVertexAttrib3svARB
+	glVertexAttrib3svNV
+	glVertexAttrib4Nbv
+	glVertexAttrib4NbvARB
+	glVertexAttrib4Niv
+	glVertexAttrib4NivARB
+	glVertexAttrib4Nsv
+	glVertexAttrib4NsvARB
+	glVertexAttrib4Nub
+	glVertexAttrib4NubARB
+	glVertexAttrib4Nubv
+	glVertexAttrib4NubvARB
+	glVertexAttrib4Nuiv
+	glVertexAttrib4NuivARB
+	glVertexAttrib4Nusv
+	glVertexAttrib4NusvARB
+	glVertexAttrib4bv
+	glVertexAttrib4bvARB
+	glVertexAttrib4d
+	glVertexAttrib4dARB
+	glVertexAttrib4dNV
+	glVertexAttrib4dv
+	glVertexAttrib4dvARB
+	glVertexAttrib4dvNV
+	glVertexAttrib4f
+	glVertexAttrib4fARB
+	glVertexAttrib4fNV
+	glVertexAttrib4fv
+	glVertexAttrib4fvARB
+	glVertexAttrib4fvNV
+	glVertexAttrib4iv
+	glVertexAttrib4ivARB
+	glVertexAttrib4s
+	glVertexAttrib4sARB
+	glVertexAttrib4sNV
+	glVertexAttrib4sv
+	glVertexAttrib4svARB
+	glVertexAttrib4svNV
+	glVertexAttrib4ubNV
+	glVertexAttrib4ubv
+	glVertexAttrib4ubvARB
+	glVertexAttrib4ubvNV
+	glVertexAttrib4uiv
+	glVertexAttrib4uivARB
+	glVertexAttrib4usv
+	glVertexAttrib4usvARB
+	glVertexAttribDivisor
+	glVertexAttribDivisorARB
+	glVertexAttribI1i
+	glVertexAttribI1iEXT
+	glVertexAttribI1iv
+	glVertexAttribI1ivEXT
+	glVertexAttribI1ui
+	glVertexAttribI1uiEXT
+	glVertexAttribI1uiv
+	glVertexAttribI1uivEXT
+	glVertexAttribI2i
+	glVertexAttribI2iEXT
+	glVertexAttribI2iv
+	glVertexAttribI2ivEXT
+	glVertexAttribI2ui
+	glVertexAttribI2uiEXT
+	glVertexAttribI2uiv
+	glVertexAttribI2uivEXT
+	glVertexAttribI3i
+	glVertexAttribI3iEXT
+	glVertexAttribI3iv
+	glVertexAttribI3ivEXT
+	glVertexAttribI3ui
+	glVertexAttribI3uiEXT
+	glVertexAttribI3uiv
+	glVertexAttribI3uivEXT
+	glVertexAttribI4bv
+	glVertexAttribI4bvEXT
+	glVertexAttribI4i
+	glVertexAttribI4iEXT
+	glVertexAttribI4iv
+	glVertexAttribI4ivEXT
+	glVertexAttribI4sv
+	glVertexAttribI4svEXT
+	glVertexAttribI4ubv
+	glVertexAttribI4ubvEXT
+	glVertexAttribI4ui
+	glVertexAttribI4uiEXT
+	glVertexAttribI4uiv
+	glVertexAttribI4uivEXT
+	glVertexAttribI4usv
+	glVertexAttribI4usvEXT
+	glVertexAttribIPointer
+	glVertexAttribIPointerEXT
+	glVertexAttribP1ui
+	glVertexAttribP1uiv
+	glVertexAttribP2ui
+	glVertexAttribP2uiv
+	glVertexAttribP3ui
+	glVertexAttribP3uiv
+	glVertexAttribP4ui
+	glVertexAttribP4uiv
+	glVertexAttribPointer
+	glVertexAttribPointerARB
+	glVertexAttribPointerNV
+	glVertexAttribs1dvNV
+	glVertexAttribs1fvNV
+	glVertexAttribs1svNV
+	glVertexAttribs2dvNV
+	glVertexAttribs2fvNV
+	glVertexAttribs2svNV
+	glVertexAttribs3dvNV
+	glVertexAttribs3fvNV
+	glVertexAttribs3svNV
+	glVertexAttribs4dvNV
+	glVertexAttribs4fvNV
+	glVertexAttribs4svNV
+	glVertexAttribs4ubvNV
+	glVertexP2ui
+	glVertexP2uiv
+	glVertexP3ui
+	glVertexP3uiv
+	glVertexP4ui
+	glVertexP4uiv
+	glVertexPointer
+	glVertexPointerEXT
+	glViewport
+	glWaitSync
+	glWindowPos2d
+	glWindowPos2dARB
+	glWindowPos2dMESA
+	glWindowPos2dv
+	glWindowPos2dvARB
+	glWindowPos2dvMESA
+	glWindowPos2f
+	glWindowPos2fARB
+	glWindowPos2fMESA
+	glWindowPos2fv
+	glWindowPos2fvARB
+	glWindowPos2fvMESA
+	glWindowPos2i
+	glWindowPos2iARB
+	glWindowPos2iMESA
+	glWindowPos2iv
+	glWindowPos2ivARB
+	glWindowPos2ivMESA
+	glWindowPos2s
+	glWindowPos2sARB
+	glWindowPos2sMESA
+	glWindowPos2sv
+	glWindowPos2svARB
+	glWindowPos2svMESA
+	glWindowPos3d
+	glWindowPos3dARB
+	glWindowPos3dMESA
+	glWindowPos3dv
+	glWindowPos3dvARB
+	glWindowPos3dvMESA
+	glWindowPos3f
+	glWindowPos3fARB
+	glWindowPos3fMESA
+	glWindowPos3fv
+	glWindowPos3fvARB
+	glWindowPos3fvMESA
+	glWindowPos3i
+	glWindowPos3iARB
+	glWindowPos3iMESA
+	glWindowPos3iv
+	glWindowPos3ivARB
+	glWindowPos3ivMESA
+	glWindowPos3s
+	glWindowPos3sARB
+	glWindowPos3sMESA
+	glWindowPos3sv
+	glWindowPos3svARB
+	glWindowPos3svMESA
+	glWindowPos4dMESA
+	glWindowPos4dvMESA
+	glWindowPos4fMESA
+	glWindowPos4fvMESA
+	glWindowPos4iMESA
+	glWindowPos4ivMESA
+	glWindowPos4sMESA
+	glWindowPos4svMESA
\ No newline at end of file
diff --git a/src/mesa/SConscript b/src/mesa/SConscript
index bb9b304..a453e7c 100644
--- a/src/mesa/SConscript
+++ b/src/mesa/SConscript
@@ -12,10 +12,15 @@ env = env.Clone()
 
 env.Append(CPPPATH = [
     '#/src/mapi',
+    '#/src/gallium/include',
+    '#/src/gallium/auxiliary',
     '#/src/glsl',
+    '#/src/glsl/cpp',
     '#/src/mesa',
+    '#/src/mesa/main',
     Dir('../mapi'), # src/mapi build path
     Dir('.'), # src/mesa build path
+    Dir('./main') # src/mesa/main build path
 ])
 
 if env['platform'] == 'windows':
@@ -336,6 +341,15 @@ mesa_sources = (
     statetracker_sources
 )
 
+mesagallium_sources = (
+  main_sources +
+  glget_sources +
+  math_sources +
+  program_sources +
+  vbo_sources +
+  statetracker_sources
+)
+
 GLAPI = '#src/mapi/glapi/'
 
 get_hash_header = env.CodeGenerate(
@@ -380,6 +394,7 @@ if (env['gcc'] or env['clang']) and \
             'x86/sse_normal.S',
             'x86/read_rgba_span_x86.S',
         ]
+        mesagallium_sources += [ 'x86/common_x86.c' ]
     elif env['machine'] == 'x86_64':
         env.Append(CPPDEFINES = [
             'USE_X86_64_ASM',
@@ -388,6 +403,7 @@ if (env['gcc'] or env['clang']) and \
             'x86-64/x86-64.c',
             'x86-64/xform4.S',
         ]
+        mesagallium_sources += [ 'x86-64/x86-64.c' ]
     elif env['machine'] == 'sparc':
         mesa_sources += [
             'sparc/sparc.c',
@@ -465,4 +481,13 @@ env.Alias('mesa', mesa)
 
 Export('mesa')
 
+mesagallium = env.ConvenienceLibrary(
+    target = 'mesagallium',
+    source = mesagallium_sources,
+)
+
+env.Alias('mesagallium', mesagallium)
+
+Export('mesagallium')
+
 SConscript('drivers/SConscript')
-- 
1.8.4.msysgit.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.