X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=docs%2Fshading.html;h=750884cf36c448c8acfb7fd98edb0d0d70bfa5e7;hb=fd7de146f6c5989ab3a8459d600ca3386571b31f;hp=0a9f5f36f400e4da9c176b51bac9255529bceabf;hpb=5ef3a2c06d474891a667ef66ffd7aaa52af5fc04;p=mesa.git diff --git a/docs/shading.html b/docs/shading.html index 0a9f5f36f40..750884cf36c 100644 --- a/docs/shading.html +++ b/docs/shading.html @@ -14,41 +14,87 @@ This page describes the features and status of Mesa's support for the OpenGL Shading Language.

-

-Last updated on 28 March 2007. -

-

Contents

+ + +

Environment Variables

+ +

+The MESA_GLSL environment variable can be set to a comma-separated +list of keywords to control some aspects of the GLSL compiler and shader +execution. These are generally used for debugging. +

+ +

+Example: export MESA_GLSL=dump,nopt +

+ + +
+

GLSL 1.20 support

+ +

+GLSL version 1.20 is supported in Mesa 7.3 and later. +Among the features/differences of GLSL 1.20 are: +

+ + +

Unsupported Features

-The following features of the shading language are not yet supported +The following features of the shading language are not yet fully supported in Mesa:

@@ -133,7 +179,7 @@ These issues will be addressed/resolved in the future. -

Stand-alone Compiler

+

Stand-alone GLSL Compiler

A unique stand-alone GLSL compiler driver has been added to Mesa. @@ -155,12 +201,12 @@ This tool is useful for:

-To build the glslcompiler program (this will be improved someday): +After building Mesa, the glslcompiler can be built by manually running:

-    cd src/mesa
-    make libmesa.a
-    cd drivers/glslcompiler
+    make realclean
+    make linux
+    cd src/mesa/drivers/glslcompiler
     make
 
@@ -170,20 +216,31 @@ 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
+    bin/glslcompiler --debug --numbers --fs progs/glsl/CH06-brick.frag.txt
 

-The output may look similar to this: +results in:

-!!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
+# Fragment Program/Shader
+  0: RCP TEMP[4].x, UNIFORM[2].xxxx;
+  1: RCP TEMP[4].y, UNIFORM[2].yyyy;
+  2: MUL TEMP[3].xy, VARYING[0], TEMP[4];
+  3: MOV TEMP[1], TEMP[3];
+  4: MUL TEMP[0].w, TEMP[1].yyyy, CONST[4].xxxx;
+  5: FRC TEMP[1].z, TEMP[0].wwww;
+  6: SGT.C TEMP[0].w, TEMP[1].zzzz, CONST[4].xxxx;
+  7: IF (NE.wwww); # (if false, goto 9);
+  8:    ADD TEMP[1].x, TEMP[1].xxxx, CONST[4].xxxx;
+  9: ENDIF;
+ 10: FRC TEMP[1].xy, TEMP[1];
+ 11: SGT TEMP[2].xy, UNIFORM[3], TEMP[1];
+ 12: MUL TEMP[1].z, TEMP[2].xxxx, TEMP[2].yyyy;
+ 13: LRP TEMP[0], TEMP[1].zzzz, UNIFORM[0], UNIFORM[1];
+ 14: MUL TEMP[0].xyz, TEMP[0], VARYING[1].xxxx;
+ 15: MOV OUTPUT[0].xyz, TEMP[0];
+ 16: MOV OUTPUT[0].w, CONST[4].yyyy;
+ 17: END
 

@@ -294,11 +351,11 @@ Extra NOP instructions will also be inserted.

Compiler Validation

-A new Glean test has +A Glean test has been create to exercise the GLSL compiler.

-The glsl1 test runs over 150 sub-tests to check that the language +The glsl1 test runs over 170 sub-tests to check that the language features and built-in functions work properly. This test should be run frequently while working on the compiler to catch regressions.