diff --git a/Makefile b/Makefile index 74784888981..c99ed53f218 100644 --- a/Makefile +++ b/Makefile @@ -92,6 +92,7 @@ linux-alpha-static \ linux-debug \ linux-directfb \ linux-dri \ +linux-dri-debug \ linux-dri-x86 \ linux-dri-x86-64 \ linux-dri-ppc \ diff --git a/configs/linux-dri b/configs/linux-dri index 5f945a73f1a..1a9146e2990 100644 --- a/configs/linux-dri +++ b/configs/linux-dri @@ -67,4 +67,4 @@ WINDOW_SYSTEM=dri # gamma are missing because they have not been converted to use the new # interface. DRI_DIRS = i810 i915tex i915 i965 mach64 mga r128 r200 r300 radeon s3v \ - savage sis tdfx trident unichrome ffb + savage sis tdfx trident unichrome ffb nouveau diff --git a/docs/contents.html b/docs/contents.html index 693145c2e3c..21eca4df871 100644 --- a/docs/contents.html +++ b/docs/contents.html @@ -64,6 +64,7 @@ a:visited {
-Mesa 6.5.3 is a 6.5 follow-on development release mostly consisting of -bug fixes. +Mesa 6.5.3 is a 6.5 follow-on development release with many internal changes.
@@ -24,8 +23,14 @@ TBD+This page describes the features and status of Mesa's support for the + +OpenGL Shading Language. +
+ ++Last updated on 17 Feb 2007. +
+ ++Contents +
++The following features of the shading language are not yet supported +in Mesa: +
+ ++All other major features of the shading language should function. +
+ + + ++These issues will be addressed/resolved in the future. +
+ + + +
+ void main()
+ {
+ vec4 a1, a2, b1, b2;
+ gl_Position = expression using a1, a2.
+ gl_Color = expression using b1, b2;
+ }
+
+ Can be rewritten as follows to use half as many registers:
+
+ void main()
+ {
+ {
+ vec4 a1, a2;
+ gl_Position = expression using a1, a2.
+ }
+ {
+ vec4 b1, b2;
+ gl_Color = expression using b1, b2;
+ }
+ }
+
+ Alternately, rather than using several float variables, use
+ a vec4 instead. Use swizzling and writemasks to access the
+ components of the vec4 as floats.
++ float x = 1.0 / sqrt(y); ++ Write this: +
+ float x = inversesqrt(y); ++
+A unique stand-alone GLSL compiler driver has been added to Mesa. +
+ +
+The stand-alone compiler (like a conventional command-line compiler) +is a tool that accepts Shading Language programs and emits low-level +GPU programs. +
+ ++This tool is useful for: +
+
+To build the glslcompiler program (this will be improved someday): +
++ cd src/mesa + make libmesa.a + cd drivers/glslcompiler + make ++ + +
+Here's an example of using the compiler to compile a vertex shader and +emit GL_ARB_vertex_program-style instructions: +
++ glslcompiler --arb --linenumbers --vs vertshader.txt ++
+The output may look similar to this: +
++!!ARBvp1.0 + 0: MOV result.texcoord[0], vertex.texcoord[0]; + 1: DP4 temp0.x, state.matrix.mvp.row[0], vertex.position; + 2: DP4 temp0.y, state.matrix.mvp.row[1], vertex.position; + 3: DP4 temp0.z, state.matrix.mvp.row[2], vertex.position; + 4: DP4 temp0.w, state.matrix.mvp.row[3], vertex.position; + 5: MOV result.position, temp0; + 6: END ++ +
+Note that some shading language constructs (such as uniform and varying +variables) aren't expressible in ARB or NV-style programs. +Therefore, the resulting output is not always legal by definition of +those program languages. +
++Also note that this compiler driver is still under development. +Over time, the correctness of the GPU programs, with respect to the ARB +and NV languagues, should improve. +
+ + + + +
+The source code for Mesa's shading language compiler is in the
+src/mesa/shader/slang/ directory.
+
+The compiler follows a fairly standard design and basically works as follows: +
++The final vertex and fragment programs may be interpreted in software +(see prog_execute.c) or translated into a specific hardware architecture +(see drivers/dri/i915/i915_fragprog.c for example). +
+ ++Internally, there are several options that control the compiler's code +generation and instruction selection. +These options are seen in the gl_shader_state struct and may be set +by the device driver to indicate its preferences: + +
+struct gl_shader_state
+{
+ ...
+ /** Driver-selectable options: */
+ GLboolean EmitHighLevelInstructions;
+ GLboolean EmitCondCodes;
+ GLboolean EmitComments;
+};
+
+
+