summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/shader/slang/slang_codegen.c9
-rw-r--r--src/mesa/shader/slang/slang_emit.c12
2 files changed, 18 insertions, 3 deletions
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index e428209ec4a..40a27bc3512 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -405,7 +405,7 @@ slang_substitute(slang_assemble_ctx *A, slang_operation *oper,
/* OK, replace this slang_oper_identifier with a new expr */
assert(substNew[i]->type == slang_oper_identifier ||
substNew[i]->type == slang_oper_literal_float);
-#if 1 /* DEBUG only */
+#if 0 /* DEBUG only */
if (substNew[i]->type == slang_oper_identifier) {
assert(substNew[i]->var);
assert(substNew[i]->var->a_name);
@@ -730,7 +730,7 @@ slang_assemble_function_call(slang_assemble_ctx *A, slang_function *fun,
#endif
-#if 1
+#if 0
assert(inlined->locals);
printf("*** Inlined code for call to %s:\n",
(char*) fun->header.a_name);
@@ -1231,8 +1231,9 @@ _slang_codegen_function(slang_assemble_ctx * A, slang_function * fun)
return 0;
printf("\n*********** Assemble function2(%s)\n", (char*)fun->header.a_name);
-
+#if 0
slang_print_function(fun, 1);
+#endif
A->program->Parameters = _mesa_new_parameter_list();
A->program->Varying = _mesa_new_parameter_list();
@@ -1254,11 +1255,13 @@ _slang_codegen_function(slang_assemble_ctx * A, slang_function * fun)
CurFunction = NULL;
+#if 0
printf("************* New body for %s *****\n", (char*)fun->header.a_name);
slang_print_function(fun, 1);
printf("************* IR for %s *******\n", (char*)fun->header.a_name);
slang_print_ir(n, 0);
+#endif
if (_mesa_strcmp((char*) fun->header.a_name, "main") == 0) {
_slang_emit_code(n, A->program);
diff --git a/src/mesa/shader/slang/slang_emit.c b/src/mesa/shader/slang/slang_emit.c
index 0b4ef6dba10..29d9544ebe2 100644
--- a/src/mesa/shader/slang/slang_emit.c
+++ b/src/mesa/shader/slang/slang_emit.c
@@ -555,12 +555,20 @@ slang_alloc_varying(struct gl_program *prog, const char *name)
{
GLint i = _mesa_add_varying(prog->Varying, name, 4); /* XXX fix size */
if (prog->Target == GL_VERTEX_PROGRAM_ARB) {
+#ifdef OLD_LINK
i += VERT_RESULT_VAR0;
prog->OutputsWritten |= (1 << i);
+#else
+ prog->OutputsWritten |= (1 << (i + VERT_RESULT_VAR0));
+#endif
}
else {
+#ifdef OLD_LINK
i += FRAG_ATTRIB_VAR0;
prog->InputsRead |= (1 << i);
+#else
+ prog->InputsRead |= (1 << (i + FRAG_ATTRIB_VAR0));
+#endif
}
return i;
}
@@ -697,10 +705,14 @@ slang_resolve_storage(slang_gen_context *gc, slang_ir_node *n,
else if (n->Var->type.qualifier == slang_qual_varying) {
i = slang_alloc_varying(prog, (char *) n->Var->a_name);
if (i >= 0) {
+#ifdef OLD_LINK
if (prog->Target == GL_VERTEX_PROGRAM_ARB)
n->Store->File = PROGRAM_OUTPUT;
else
n->Store->File = PROGRAM_INPUT;
+#else
+ n->Store->File = PROGRAM_VARYING;
+#endif
n->Store->Size = sizeof_type(&n->Var->type);
n->Store->Index = i;
return;