|
|
@@ -1,8 +1,8 @@ |
|
|
|
/* |
|
|
|
* Mesa 3-D graphics library |
|
|
|
* Version: 6.5.3 |
|
|
|
* Version: 7.3 |
|
|
|
* |
|
|
|
* Copyright (C) 1999-2007 Brian Paul All Rights Reserved. |
|
|
|
* Copyright (C) 1999-2008 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"), |
|
|
@@ -80,7 +80,8 @@ GLint |
|
|
|
_mesa_add_parameter(struct gl_program_parameter_list *paramList, |
|
|
|
enum register_file type, const char *name, |
|
|
|
GLuint size, GLenum datatype, const GLfloat *values, |
|
|
|
const gl_state_index state[STATE_LENGTH]) |
|
|
|
const gl_state_index state[STATE_LENGTH], |
|
|
|
GLbitfield flags) |
|
|
|
{ |
|
|
|
const GLuint oldNum = paramList->NumParameters; |
|
|
|
const GLuint sz4 = (size + 3) / 4; /* no. of new param slots needed */ |
|
|
@@ -125,6 +126,7 @@ _mesa_add_parameter(struct gl_program_parameter_list *paramList, |
|
|
|
p->Type = type; |
|
|
|
p->Size = size; |
|
|
|
p->DataType = datatype; |
|
|
|
p->Flags = flags; |
|
|
|
if (values) { |
|
|
|
COPY_4V(paramList->ParameterValues[oldNum + i], values); |
|
|
|
values += 4; |
|
|
@@ -156,7 +158,7 @@ _mesa_add_named_parameter(struct gl_program_parameter_list *paramList, |
|
|
|
const char *name, const GLfloat values[4]) |
|
|
|
{ |
|
|
|
return _mesa_add_parameter(paramList, PROGRAM_NAMED_PARAM, name, |
|
|
|
4, GL_NONE, values, NULL); |
|
|
|
4, GL_NONE, values, NULL, 0x0); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
@@ -187,7 +189,7 @@ _mesa_add_named_constant(struct gl_program_parameter_list *paramList, |
|
|
|
#endif |
|
|
|
size = 4; /** XXX fix */ |
|
|
|
return _mesa_add_parameter(paramList, PROGRAM_CONSTANT, name, |
|
|
|
size, GL_NONE, values, NULL); |
|
|
|
size, GL_NONE, values, NULL, 0x0); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@@ -239,7 +241,7 @@ _mesa_add_unnamed_constant(struct gl_program_parameter_list *paramList, |
|
|
|
|
|
|
|
/* add a new parameter to store this constant */ |
|
|
|
pos = _mesa_add_parameter(paramList, PROGRAM_CONSTANT, NULL, |
|
|
|
size, GL_NONE, values, NULL); |
|
|
|
size, GL_NONE, values, NULL, 0x0); |
|
|
|
if (pos >= 0 && swizzleOut) { |
|
|
|
if (size == 1) |
|
|
|
*swizzleOut = SWIZZLE_XXXX; |
|
|
@@ -273,7 +275,7 @@ _mesa_add_uniform(struct gl_program_parameter_list *paramList, |
|
|
|
} |
|
|
|
else { |
|
|
|
i = _mesa_add_parameter(paramList, PROGRAM_UNIFORM, name, |
|
|
|
size, datatype, values, NULL); |
|
|
|
size, datatype, values, NULL, 0x0); |
|
|
|
return i; |
|
|
|
} |
|
|
|
} |
|
|
@@ -328,7 +330,7 @@ _mesa_add_sampler(struct gl_program_parameter_list *paramList, |
|
|
|
} |
|
|
|
value = (GLfloat) numSamplers; |
|
|
|
(void) _mesa_add_parameter(paramList, PROGRAM_SAMPLER, name, |
|
|
|
size, datatype, &value, NULL); |
|
|
|
size, datatype, &value, NULL, 0x0); |
|
|
|
return numSamplers; |
|
|
|
} |
|
|
|
} |
|
|
@@ -339,7 +341,7 @@ _mesa_add_sampler(struct gl_program_parameter_list *paramList, |
|
|
|
*/ |
|
|
|
GLint |
|
|
|
_mesa_add_varying(struct gl_program_parameter_list *paramList, |
|
|
|
const char *name, GLuint size) |
|
|
|
const char *name, GLuint size, GLbitfield flags) |
|
|
|
{ |
|
|
|
GLint i = _mesa_lookup_parameter_index(paramList, -1, name); |
|
|
|
if (i >= 0 && paramList->Parameters[i].Type == PROGRAM_VARYING) { |
|
|
@@ -349,7 +351,7 @@ _mesa_add_varying(struct gl_program_parameter_list *paramList, |
|
|
|
else { |
|
|
|
/*assert(size == 4);*/ |
|
|
|
i = _mesa_add_parameter(paramList, PROGRAM_VARYING, name, |
|
|
|
size, GL_NONE, NULL, NULL); |
|
|
|
size, GL_NONE, NULL, NULL, flags); |
|
|
|
return i; |
|
|
|
} |
|
|
|
} |
|
|
@@ -378,7 +380,7 @@ _mesa_add_attribute(struct gl_program_parameter_list *paramList, |
|
|
|
if (size < 0) |
|
|
|
size = 4; |
|
|
|
i = _mesa_add_parameter(paramList, PROGRAM_INPUT, name, |
|
|
|
size, datatype, NULL, state); |
|
|
|
size, datatype, NULL, state, 0x0); |
|
|
|
} |
|
|
|
return i; |
|
|
|
} |
|
|
@@ -445,7 +447,7 @@ _mesa_add_state_reference(struct gl_program_parameter_list *paramList, |
|
|
|
name = _mesa_program_state_string(stateTokens); |
|
|
|
index = _mesa_add_parameter(paramList, PROGRAM_STATE_VAR, name, |
|
|
|
size, GL_NONE, |
|
|
|
NULL, (gl_state_index *) stateTokens); |
|
|
|
NULL, (gl_state_index *) stateTokens, 0x0); |
|
|
|
paramList->StateFlags |= _mesa_program_state_flags(stateTokens); |
|
|
|
|
|
|
|
/* free name string here since we duplicated it in add_parameter() */ |
|
|
@@ -616,7 +618,7 @@ _mesa_clone_parameter_list(const struct gl_program_parameter_list *list) |
|
|
|
struct gl_program_parameter *pCopy; |
|
|
|
GLuint size = MIN2(p->Size, 4); |
|
|
|
GLint j = _mesa_add_parameter(clone, p->Type, p->Name, size, p->DataType, |
|
|
|
list->ParameterValues[i], NULL); |
|
|
|
list->ParameterValues[i], NULL, 0x0); |
|
|
|
ASSERT(j >= 0); |
|
|
|
pCopy = clone->Parameters + j; |
|
|
|
pCopy->Used = p->Used; |
|
|
@@ -657,7 +659,8 @@ _mesa_combine_parameter_lists(const struct gl_program_parameter_list *listA, |
|
|
|
_mesa_add_parameter(list, param->Type, param->Name, param->Size, |
|
|
|
param->DataType, |
|
|
|
listB->ParameterValues[i], |
|
|
|
param->StateIndexes); |
|
|
|
param->StateIndexes, |
|
|
|
param->Flags); |
|
|
|
} |
|
|
|
} |
|
|
|
} |