mesa: Branch 'glsl-compiler-1' - 8 commits

Brian Paul brianp at kemper.freedesktop.org
Sat Feb 3 01:06:01 UTC 2007


 src/mesa/shader/shader_api.c                          |   14 +
 src/mesa/shader/slang/library/Makefile                |    6 
 src/mesa/shader/slang/library/slang_builtin_vec4.gc   |  216 ------------------
 src/mesa/shader/slang/library/slang_builtin_vec4_gc.h |   58 ----
 src/mesa/shader/slang/slang_codegen.c                 |    1 
 src/mesa/shader/slang/slang_compile.c                 |   20 -
 src/mesa/shader/slang/slang_compile_variable.c        |   12 -
 src/mesa/shader/slang/slang_storage.c                 |   17 -
 src/mesa/shader/slang/slang_typeinfo.c                |   16 +
 9 files changed, 46 insertions(+), 314 deletions(-)

New commits:
diff-tree fee9bbe4751eb11947c1d739fbf1dd5e352fc433 (from a90e4c3ddfcdf9f0b9a0424a1a6a9d6496c6f218)
Author: Brian <brian at yutani.localnet.net>
Date:   Fri Feb 2 18:05:43 2007 -0700

    Only glUniform1i() can be used to set sampler uniforms.  Generate error otherwise.

diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c
index e2fedf7..1914adb 100644
--- a/src/mesa/shader/shader_api.c
+++ b/src/mesa/shader/shader_api.c
@@ -891,8 +891,22 @@ _mesa_uniform(GLcontext *ctx, GLint loca
 
    FLUSH_VERTICES(ctx, _NEW_PROGRAM);
 
+   /*
+    * If we're setting a sampler, we must use glUniformi1()!
+    */
+   if (shProg->Uniforms->Parameters[location].Type == PROGRAM_SAMPLER) {
+      if (type != GL_INT || count != 1) {
+         _mesa_error(ctx, GL_INVALID_OPERATION,
+                     "glUniform(only glUniform1i can be used "
+                     "to set sampler uniforms)");
+         return;
+      }
+   }
+
    uniformVal = shProg->Uniforms->ParameterValues[location];
 
+   /* XXX obey 'count' parameter! */
+
    if (type == GL_INT ||
        type == GL_INT_VEC2 ||
        type == GL_INT_VEC3 ||
diff-tree a90e4c3ddfcdf9f0b9a0424a1a6a9d6496c6f218 (from 1b3092e4bb89b7a5bd64a3e27f82299d4b2669a2)
Author: Brian <brian at yutani.localnet.net>
Date:   Fri Feb 2 18:00:26 2007 -0700

    add vec4_texcube to AsmInfo[]

diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index 17d1a6b..4cb161a 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -460,6 +460,7 @@ static slang_asm_info AsmInfo[] = {
    { "vec4_tex3d", IR_TEX, 1, 2 },
    { "vec4_texb3d", IR_TEXB, 1, 2 },  /* 3d w/ bias */
    { "vec4_texp3d", IR_TEXP, 1, 2 },  /* 3d w/ projection */
+   { "vec4_texcube", IR_TEX, 1, 2 },  /* cubemap */
 
    /* unary op */
    { "int_to_float", IR_I_TO_F, 1, 1 },
diff-tree 1b3092e4bb89b7a5bd64a3e27f82299d4b2669a2 (from bf823b6b77d01b4c4839f4ad05383fc9ec8095be)
Author: Brian <brian at yutani.localnet.net>
Date:   Fri Feb 2 18:00:03 2007 -0700

    add _slang_multiply_swizzles()

diff --git a/src/mesa/shader/slang/slang_typeinfo.c b/src/mesa/shader/slang/slang_typeinfo.c
index 8bedb40..5a3c2ea 100644
--- a/src/mesa/shader/slang/slang_typeinfo.c
+++ b/src/mesa/shader/slang/slang_typeinfo.c
@@ -151,6 +151,22 @@ _slang_is_swizzle_mask(const slang_swizz
 }
 
 
+/**
+ * Combines (multiplies) two swizzles to form single swizzle.
+ * Example: "vec.wzyx.yx" --> "vec.zw".
+ */
+GLvoid
+_slang_multiply_swizzles(slang_swizzle * dst, const slang_swizzle * left,
+                         const slang_swizzle * right)
+{
+   GLuint i;
+
+   dst->num_components = right->num_components;
+   for (i = 0; i < right->num_components; i++)
+      dst->swizzle[i] = left->swizzle[right->swizzle[i]];
+}
+
+
 GLvoid
 slang_type_specifier_ctr(slang_type_specifier * self)
 {
diff-tree bf823b6b77d01b4c4839f4ad05383fc9ec8095be (from 670e9007196fdabb698e2390dc55c0b26781cff4)
Author: Brian <brian at yutani.localnet.net>
Date:   Fri Feb 2 16:46:50 2007 -0700

    clean-ups

diff --git a/src/mesa/shader/slang/slang_compile_variable.c b/src/mesa/shader/slang/slang_compile_variable.c
index c8ffaf2..25fbc21 100644
--- a/src/mesa/shader/slang/slang_compile_variable.c
+++ b/src/mesa/shader/slang/slang_compile_variable.c
@@ -1,8 +1,8 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.5
+ * Version:  6.5.3
  *
- * Copyright (C) 2005-2006  Brian Paul   All Rights Reserved.
+ * Copyright (C) 2005-2007  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -313,6 +313,7 @@ slang_variable_copy(slang_variable * x, 
    return 1;
 }
 
+
 slang_variable *
 _slang_locate_variable(const slang_variable_scope * scope,
                        const slang_atom a_name, GLboolean all)
@@ -327,10 +328,7 @@ _slang_locate_variable(const slang_varia
    return NULL;
 }
 
-/*
- * _slang_build_export_data_table()
- */
-
+#if 0
 static GLenum
 gl_type_from_specifier(const slang_type_specifier * type)
 {
@@ -383,3 +381,5 @@ gl_type_from_specifier(const slang_type_
       return GL_FLOAT;
    }
 }
+#endif
+
diff-tree 670e9007196fdabb698e2390dc55c0b26781cff4 (from 31d2a0019249256705ae00984e80b5d768fd3a73)
Author: Brian <brian at yutani.localnet.net>
Date:   Fri Feb 2 16:45:07 2007 -0700

    clean-ups

diff --git a/src/mesa/shader/slang/slang_storage.c b/src/mesa/shader/slang/slang_storage.c
index 747d8e1..9f82437 100644
--- a/src/mesa/shader/slang/slang_storage.c
+++ b/src/mesa/shader/slang/slang_storage.c
@@ -76,14 +76,10 @@ slang_storage_aggregate_push_new(slang_s
 {
    slang_storage_array *arr = NULL;
 
-   agg->arrays =
-      (slang_storage_array *) slang_alloc_realloc(agg->arrays,
-                                                  agg->count *
-                                                  sizeof(slang_storage_array),
-                                                  (agg->count +
-                                                   1) *
-                                                  sizeof
-                                                  (slang_storage_array));
+   agg->arrays = (slang_storage_array *)
+      slang_alloc_realloc(agg->arrays,
+                          agg->count * sizeof(slang_storage_array),
+                          (agg->count + 1) * sizeof(slang_storage_array));
    if (agg->arrays != NULL) {
       arr = agg->arrays + agg->count;
       if (!slang_storage_array_construct(arr))
@@ -131,6 +127,7 @@ aggregate_matrix(slang_storage_aggregate
    return GL_TRUE;
 }
 
+
 static GLboolean
 aggregate_variables(slang_storage_aggregate * agg,
                     slang_variable_scope * vars, slang_function_scope * funcs,
@@ -148,6 +145,7 @@ aggregate_variables(slang_storage_aggreg
    return GL_TRUE;
 }
 
+
 GLboolean
 _slang_aggregate_variable(slang_storage_aggregate * agg,
                           slang_type_specifier * spec, GLuint array_len,
@@ -227,7 +225,6 @@ _slang_aggregate_variable(slang_storage_
    }
 }
 
-/* _slang_sizeof_type() */
 
 GLuint
 _slang_sizeof_type(slang_storage_type type)
@@ -239,7 +236,6 @@ _slang_sizeof_type(slang_storage_type ty
    return sizeof(GLfloat);
 }
 
-/* _slang_sizeof_aggregate() */
 
 GLuint
 _slang_sizeof_aggregate(const slang_storage_aggregate * agg)
@@ -259,7 +255,6 @@ _slang_sizeof_aggregate(const slang_stor
    return size;
 }
 
-/* _slang_flatten_aggregate () */
 
 GLboolean
 _slang_flatten_aggregate(slang_storage_aggregate * flat,
diff-tree 31d2a0019249256705ae00984e80b5d768fd3a73 (from b4f38a4d60bec9ceb68cc62546be0f418351fc23)
Author: Brian <brian at yutani.localnet.net>
Date:   Fri Feb 2 16:41:52 2007 -0700

    clean-ups

diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c
index 2f4d458..619fe50 100644
--- a/src/mesa/shader/slang/slang_compile.c
+++ b/src/mesa/shader/slang/slang_compile.c
@@ -1472,7 +1472,6 @@ parse_function_prototype(slang_parse_ctx
          return 0;
    }
 
-#if 111
    /* if the function returns a value, append a hidden __retVal 'out'
     * parameter that corresponds to the return value.
     */
@@ -1484,7 +1483,6 @@ parse_function_prototype(slang_parse_ctx
       p->type = func->header.type;
       p->type.qualifier = slang_qual_out;
    }
-#endif
 
    /* function formal parameters and local variables share the same
     * scope, so save the information about param count in a seperate
@@ -1654,7 +1652,6 @@ parse_init_declarator(slang_parse_ctx * 
       if (!parse_expression(C, O, var->initializer))
          return 0;
       break;
-#if 0
    case VARIABLE_ARRAY_UNKNOWN:
       /* unsized array - mark it as array and copy the specifier to
          the array element
@@ -1662,7 +1659,6 @@ parse_init_declarator(slang_parse_ctx * 
       if (!convert_to_array(C, var, &type->specifier))
          return GL_FALSE;
       break;
-#endif
    case VARIABLE_ARRAY_EXPLICIT:
       if (!convert_to_array(C, var, &type->specifier))
          return GL_FALSE;
@@ -1673,20 +1669,17 @@ parse_init_declarator(slang_parse_ctx * 
       return 0;
    }
 
-#if 1
+   /* emit code for global var decl */
    if (C->global_scope) {
       slang_assemble_ctx A;
-
       A.atoms = C->atoms;
       A.space.funcs = O->funs;
       A.space.structs = O->structs;
       A.space.vars = O->vars;
       A.program = O->program;
       A.vartable = O->vartable;
-
       _slang_codegen_global_variable(&A, var, C->type);
    }
-#endif
 
    /* allocate global address space for a variable with a known size */
    if (C->global_scope
@@ -1995,8 +1988,7 @@ compile_with_grammar(grammar id, const c
    /* Finally check the syntax and generate its binary representation. */
    if (!grammar_fast_check(id,
                            (const byte *) (slang_string_cstr(&preprocessed)),
-                           &prod, &size,
-        65536)) {
+                           &prod, &size, 65536)) {
       char buf[1024];
       GLint pos;
 
@@ -2133,14 +2125,6 @@ compile_shader(GLcontext *ctx, slang_cod
    if (!success)
       return GL_FALSE;
 
-#if NEW_SLANG
-   {
-      slang_create_uniforms(&object->expdata, shader);
-      _mesa_print_program(program);
-      _mesa_print_program_parameters(ctx, program);
-   }
-#endif
-
    return GL_TRUE;
 }
 
diff-tree b4f38a4d60bec9ceb68cc62546be0f418351fc23 (from 4bbef7a6442bfecb6291e981c3a42eda83faa9c2)
Author: Brian <brian at yutani.localnet.net>
Date:   Fri Feb 2 16:38:04 2007 -0700

    remove slang_builtin_vec4.gc

diff --git a/src/mesa/shader/slang/library/Makefile b/src/mesa/shader/slang/library/Makefile
index 67c0039..dc67b59 100644
--- a/src/mesa/shader/slang/library/Makefile
+++ b/src/mesa/shader/slang/library/Makefile
@@ -21,7 +21,7 @@ clean:
 
 syntax: slang_pp_directives_syn.h slang_pp_expression_syn.h slang_shader_syn.h slang_pp_version_syn.h
 
-builtin: builtin_110 builtin_120 builtin_vec4
+builtin: builtin_110 builtin_120
 
 #
 # executables
@@ -57,7 +57,6 @@ builtin_110: slang_common_builtin_gc.h s
 
 builtin_120: slang_120_core_gc.h slang_builtin_120_common_gc.h slang_builtin_120_fragment_gc.h
 
-builtin_vec4: slang_builtin_vec4_gc.h
 
 slang_120_core_gc.h: gc_to_bin slang_120_core.gc
 	./gc_to_bin 1 slang_120_core.gc slang_120_core_gc.h
@@ -68,9 +67,6 @@ slang_builtin_120_common_gc.h: gc_to_bin
 slang_builtin_120_fragment_gc.h: gc_to_bin slang_builtin_120_fragment.gc
 	./gc_to_bin 1 slang_builtin_120_fragment.gc slang_builtin_120_fragment_gc.h
 
-slang_builtin_vec4_gc.h: gc_to_bin slang_builtin_vec4.gc
-	./gc_to_bin 1 slang_builtin_vec4.gc slang_builtin_vec4_gc.h
-
 slang_common_builtin_gc.h: gc_to_bin slang_common_builtin.gc
 	./gc_to_bin 1 slang_common_builtin.gc slang_common_builtin_gc.h
 
diff --git a/src/mesa/shader/slang/library/slang_builtin_vec4_gc.h b/src/mesa/shader/slang/library/slang_builtin_vec4_gc.h
deleted file mode 100644
index 081bb6f..0000000
--- a/src/mesa/shader/slang/library/slang_builtin_vec4_gc.h
+++ /dev/null
@@ -1,58 +0,0 @@
-
-/* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE FOLLOWING FILE: */
-/* slang_builtin_vec4.gc */
-
-3,1,0,12,1,1,1,0,9,102,0,0,0,1,3,2,0,12,1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,
-52,0,18,118,0,0,18,102,0,0,0,8,18,118,0,0,0,1,0,0,2,1,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,
-101,99,52,95,97,100,100,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,2,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,
-1,4,118,101,99,52,95,115,117,98,116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,3,1,0,2,12,
-118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,
-117,0,0,0,0,1,0,0,2,4,1,0,2,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,100,105,118,105,100,
-101,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,1,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,3,2,0,12,1,117,0,0,0,
-4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,97,0,0,0,4,118,101,99,52,95,97,
-100,100,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,2,1,0,2,12,118,0,0,1,1,0,9,97,0,0,0,1,3,2,0,12,1,117,0,
-0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,97,0,0,0,4,118,101,99,52,95,
-115,117,98,116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,3,1,0,2,12,118,0,0,1,1,0,9,97,0,0,
-0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,97,0,0,0,
-4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,117,0,0,0,0,1,0,0,2,4,1,0,2,12,
-118,0,0,1,1,0,9,97,0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,
-18,117,0,0,18,97,0,0,0,4,118,101,99,52,95,100,105,118,105,100,101,0,18,118,0,0,18,117,0,0,0,0,1,0,
-12,2,26,1,0,0,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,97,100,100,0,18,118,0,0,18,117,0,
-0,0,8,18,118,0,0,0,1,0,12,2,27,1,0,0,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,115,117,98,
-116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,21,1,0,0,12,118,0,0,1,1,0,12,
-117,0,0,0,1,4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,117,0,0,0,8,18,118,
-0,0,0,1,0,12,2,22,1,0,0,12,118,0,0,1,1,0,12,117,0,0,0,1,4,118,101,99,52,95,100,105,118,105,100,101,
-0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,26,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,
-1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,118,0,0,18,97,0,0,0,4,118,101,99,
-52,95,97,100,100,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,26,1,1,0,12,118,0,0,1,1,0,9,98,
-0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,98,0,
-0,0,4,118,101,99,52,95,97,100,100,0,18,117,0,0,18,118,0,0,0,8,18,117,0,0,0,1,0,12,2,27,1,1,0,9,97,
-0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,
-18,118,0,0,18,97,0,0,0,4,118,101,99,52,95,115,117,98,116,114,97,99,116,0,18,118,0,0,18,117,0,0,0,8,
-18,118,0,0,0,1,0,12,2,27,1,0,0,12,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,
-116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,98,0,0,0,4,118,101,99,52,95,115,117,98,116,114,97,
-99,116,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,21,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,
-2,0,12,1,118,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,118,0,0,18,97,0,0,0,4,118,
-101,99,52,95,109,117,108,116,105,112,108,121,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,21,
-1,1,0,12,118,0,0,1,1,0,9,98,0,0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,
-101,99,52,0,18,117,0,0,18,98,0,0,0,4,118,101,99,52,95,109,117,108,116,105,112,108,121,0,18,117,0,0,
-18,118,0,0,0,8,18,117,0,0,0,1,0,12,2,22,1,1,0,9,97,0,0,1,1,0,12,117,0,0,0,1,3,2,0,12,1,118,0,0,0,4,
-102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,118,0,0,18,97,0,0,0,4,118,101,99,52,95,100,105,
-118,105,100,101,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,22,1,0,0,12,118,0,0,1,1,0,9,98,0,
-0,0,1,3,2,0,12,1,117,0,0,0,4,102,108,111,97,116,95,116,111,95,118,101,99,52,0,18,117,0,0,18,98,0,0,
-0,4,118,101,99,52,95,100,105,118,105,100,101,0,18,118,0,0,18,117,0,0,0,8,18,118,0,0,0,1,0,12,2,27,
-1,0,0,12,118,0,0,0,1,4,118,101,99,52,95,110,101,103,97,116,101,0,18,118,0,0,0,8,18,118,0,0,0,1,0,9,
-0,100,111,116,0,1,0,0,11,118,0,0,1,0,0,11,117,0,0,0,1,3,2,0,12,1,118,52,0,2,58,118,101,99,52,0,18,
-118,0,0,17,48,0,48,0,0,0,0,0,0,3,2,0,12,1,117,52,0,2,58,118,101,99,52,0,18,117,0,0,17,48,0,48,0,0,
-0,0,0,0,4,118,101,99,52,95,100,111,116,0,18,118,52,0,0,18,117,52,0,0,0,8,18,118,52,0,59,120,0,0,0,
-1,0,9,0,108,101,110,103,116,104,0,1,0,0,11,118,0,0,0,1,3,2,0,12,1,117,0,2,58,118,101,99,52,0,18,
-118,0,0,17,48,0,48,0,0,0,0,0,0,4,118,101,99,52,95,100,111,116,0,18,117,0,0,18,117,0,0,0,8,58,115,
-113,114,116,0,18,117,0,59,120,0,0,0,0,0,1,0,9,0,108,101,110,103,116,104,0,1,0,0,12,118,0,0,0,1,4,
-118,101,99,52,95,100,111,116,0,18,118,0,0,18,118,0,0,0,8,58,115,113,114,116,0,18,118,0,59,120,0,0,
-0,0,0,1,0,11,0,110,111,114,109,97,108,105,122,101,0,1,0,0,11,118,0,0,0,1,3,2,0,9,1,115,0,2,58,105,
-110,118,101,114,115,101,115,113,114,116,0,58,100,111,116,0,18,118,0,0,18,118,0,0,0,0,0,0,0,9,18,95,
-95,114,101,116,86,97,108,0,18,118,0,18,115,0,48,20,0,0,1,0,12,0,110,111,114,109,97,108,105,122,101,
-0,1,0,0,12,118,0,0,0,1,3,2,0,12,1,119,0,2,18,118,0,0,0,4,118,101,99,52,95,100,111,116,0,18,118,0,0,
-18,118,0,0,0,3,2,0,9,1,108,0,2,58,115,113,114,116,0,18,118,0,59,120,0,0,0,0,0,4,102,108,111,97,116,
-95,116,111,95,118,101,99,52,0,18,118,0,0,18,108,0,0,0,4,118,101,99,52,95,100,105,118,105,100,101,0,
-18,119,0,0,18,118,0,0,0,8,18,119,0,0,0,0
diff-tree 4bbef7a6442bfecb6291e981c3a42eda83faa9c2 (from d9dbb3e15442635df10333fbf31dbede0ce2797a)
Author: Brian <brian at yutani.localnet.net>
Date:   Fri Feb 2 16:38:00 2007 -0700

    remove slang_builtin_vec4.gc

diff --git a/src/mesa/shader/slang/library/slang_builtin_vec4.gc b/src/mesa/shader/slang/library/slang_builtin_vec4.gc
deleted file mode 100644
index f075a88..0000000
--- a/src/mesa/shader/slang/library/slang_builtin_vec4.gc
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  6.5
- *
- * Copyright (C) 2006  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-//
-// This file overrides most of the standard built-in functions that operate on vec4 data type.
-// This file also overrides most commonly used functions that do not neccessarily operate
-// on vec4 data type, like dot(vec3,vec3). Those are adapted to vec4 instructions and are believed
-// to execute faster.
-// This file replaces parts of the core.gc and common.gc, so it must be included somewhere after
-// the common.gc file.
-// 
-// Assembly instructions required:
-//   float_to_vec4
-//   vec4_add
-//   vec4_subtract
-//   vec4_multiply
-//   vec4_divide
-//   vec4_negate
-//   vec4_dot
-//
-
-
-vec4 __constructor (const float f) {
-    vec4 v;
-    __asm float_to_vec4 v, f;
-    return v;
-}
-
-
-void __operator += (inout vec4 v, const vec4 u) {
-    __asm vec4_add v, u;
-}
-
-void __operator -= (inout vec4 v, const vec4 u) {
-    __asm vec4_subtract v, u;
-}
-
-void __operator *= (inout vec4 v, const vec4 u) {
-    __asm vec4_multiply v, u;
-}
-
-void __operator /= (inout vec4 v, const vec4 u) {
-    __asm vec4_divide v, u;
-}
-
-
-void __operator += (inout vec4 v, const float a) {
-    vec4 u;
-    __asm float_to_vec4 u, a;
-    __asm vec4_add      v, u;
-}
-
-void __operator -= (inout vec4 v, const float a) {
-    vec4 u;
-    __asm float_to_vec4 u, a;
-    __asm vec4_subtract v, u;
-}
-
-void __operator *= (inout vec4 v, const float a) {
-    vec4 u;
-    __asm float_to_vec4 u, a;
-    __asm vec4_multiply v, u;
-}
-
-void __operator /= (inout vec4 v, const float a) {
-    vec4 u;
-    __asm float_to_vec4 u, a;
-    __asm vec4_divide   v, u;
-}
-
-
-vec4 __operator + (vec4 v, const vec4 u) {
-    __asm vec4_add v, u;
-    return v;
-}
-
-vec4 __operator - (vec4 v, const vec4 u) {
-    __asm vec4_subtract v, u;
-    return v;
-}
-
-vec4 __operator * (vec4 v, const vec4 u) {
-    __asm vec4_multiply v, u;
-    return v;
-}
-
-vec4 __operator / (vec4 v, const vec4 u) {
-    __asm vec4_divide v, u;
-    return v;
-}
-
-
-vec4 __operator + (const float a, const vec4 u) {
-    vec4 v;
-    __asm float_to_vec4 v, a;
-    __asm vec4_add      v, u;
-    return v;
-}
-
-vec4 __operator + (const vec4 v, const float b) {
-    vec4 u;
-    __asm float_to_vec4 u, b;
-    __asm vec4_add      u, v;
-    return u;
-}
-
-vec4 __operator - (const float a, const vec4 u) {
-    vec4 v;
-    __asm float_to_vec4 v, a;
-    __asm vec4_subtract v, u;
-    return v;
-}
-
-vec4 __operator - (vec4 v, const float b) {
-    vec4 u;
-    __asm float_to_vec4 u, b;
-    __asm vec4_subtract v, u;
-    return v;
-}
-
-vec4 __operator * (const float a, const vec4 u) {
-    vec4 v;
-    __asm float_to_vec4 v, a;
-    __asm vec4_multiply v, u;
-    return v;
-}
-
-vec4 __operator * (const vec4 v, const float b) {
-    vec4 u;
-    __asm float_to_vec4 u, b;
-    __asm vec4_multiply u, v;
-    return u;
-}
-
-vec4 __operator / (const float a, const vec4 u) {
-    vec4 v;
-    __asm float_to_vec4 v, a;
-    __asm vec4_divide   v, u;
-    return v;
-}
-
-vec4 __operator / (vec4 v, const float b) {
-    vec4 u;
-    __asm float_to_vec4 u, b;
-    __asm vec4_divide   v, u;
-    return v;
-}
-
-
-vec4 __operator - (vec4 v) {
-    __asm vec4_negate v;
-    return v;
-}
-
-
-float dot (vec3 v, vec3 u) {
-    vec4 v4 = vec4 (v, 0.0);
-    vec4 u4 = vec4 (u, 0.0);
-    __asm vec4_dot v4, u4;
-    return v4.x;
-}
-
-//float dot (vec4 v, vec4 u) {
-//    __asm vec4_dot v, u;
-//    return v.x;
-//}
-
-
-float length (vec3 v) {
-    vec4 u = vec4 (v, 0.0);
-    __asm vec4_dot u, u;
-    return sqrt (u.x);
-}
-
-float length (vec4 v) {
-    __asm vec4_dot v, v;
-    return sqrt (v.x);
-}
-
-
-vec3 normalize (vec3 v)
-{
-   float s = inversesqrt(dot(v,v));  
-   __retVal = v * s;
-}
-
-vec4 normalize (vec4 v) {
-    vec4 w = v;
-    __asm vec4_dot      v, v;
-    float l = sqrt (v.x);
-    __asm float_to_vec4 v, l;
-    __asm vec4_divide   w, v;
-    return w;
-}
-



More information about the mesa-commit mailing list