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