#include "main/glheader.h"
#include "main/context.h"
-#include "main/imports.h"
+
#include "prog_instruction.h"
#include "prog_parameter.h"
#include "prog_print.h"
#include "prog_statevars.h"
+#include "util/bitscan.h"
switch (f) {
case PROGRAM_TEMPORARY:
return "TEMP";
- case PROGRAM_STATE_VAR:
- return "STATE";
+ case PROGRAM_ARRAY:
+ return "ARRAY";
case PROGRAM_INPUT:
return "INPUT";
case PROGRAM_OUTPUT:
return "OUTPUT";
+ case PROGRAM_STATE_VAR:
+ return "STATE";
case PROGRAM_CONSTANT:
return "CONST";
case PROGRAM_UNIFORM:
return "SYSVAL";
case PROGRAM_UNDEFINED:
return "UNDEFINED";
+ case PROGRAM_IMMEDIATE:
+ return "IMM";
+ case PROGRAM_BUFFER:
+ return "BUFFER";
+ case PROGRAM_MEMORY:
+ return "MEMORY";
+ case PROGRAM_IMAGE:
+ return "IMAGE";
+ case PROGRAM_HW_ATOMIC:
+ return "HWATOMIC";
default:
{
static char s[20];
- _mesa_snprintf(s, sizeof(s), "FILE%u", f);
+ snprintf(s, sizeof(s), "FILE%u", f);
return s;
}
}
*/
static const char *const vertAttribs[] = {
"vertex.position",
- "vertex.weight",
"vertex.normal",
"vertex.color.primary",
"vertex.color.secondary",
"fragment.(twenty-seven)", /* VARYING_SLOT_CULL_DIST1 */
"fragment.(twenty-eight)", /* VARYING_SLOT_BOUNDING_BOX0 */
"fragment.(twenty-nine)", /* VARYING_SLOT_BOUNDING_BOX1 */
+ "fragment.(thirty)", /* VARYING_SLOT_VIEW_INDEX */
+ "fragment.(thirty-one)", /* VARYING_SLOT_VIEWPORT_MASK */
"fragment.varying[0]",
"fragment.varying[1]",
"fragment.varying[2]",
"result.(twenty-seven)", /* VARYING_SLOT_CULL_DIST1 */
"result.(twenty-eight)", /* VARYING_SLOT_BOUNDING_BOX0 */
"result.(twenty-nine)", /* VARYING_SLOT_BOUNDING_BOX1 */
+ "result.(thirty)", /* VARYING_SLOT_VIEW_INDEX */
+ "result.(thirty-one)", /* VARYING_SLOT_VIEWPORT_MASK */
"result.varying[0]",
"result.varying[1]",
"result.varying[2]",
reg_string((gl_register_file) dstReg->File,
dstReg->Index, mode, dstReg->RelAddr, prog),
_mesa_writemask_string(dstReg->WriteMask));
-
+
#if 0
fprintf(f, "%s[%d]%s",
_mesa_register_file_name((gl_register_file) dstReg->File),
static void
fprint_src_reg(FILE *f,
- const struct prog_src_register *srcReg,
+ const struct prog_src_register *srcReg,
gl_prog_print_mode mode,
const struct gl_program *prog)
{
const GLfloat *p = prog->LocalParams[i];
fprintf(f, "%2d: %f, %f, %f, %f\n", i, p[0], p[1], p[2], p[3]);
}
-#endif
+#endif
_mesa_print_parameter_list(prog->Parameters);
}
fprintf(f, "dirty state flags: 0x%x\n", list->StateFlags);
for (i = 0; i < list->NumParameters; i++){
struct gl_program_parameter *param = list->Parameters + i;
- const GLfloat *v = (GLfloat *) list->ParameterValues[i];
+ unsigned pvo = list->ParameterValueOffset[i];
+ const GLfloat *v = (GLfloat *) list->ParameterValues + pvo;
+
fprintf(f, "param[%d] sz=%d %s %s = {%.3g, %.3g, %.3g, %.3g}",
i, param->Size,
_mesa_register_file_name(list->Parameters[i].Type),
case MESA_SHADER_COMPUTE:
type = "comp";
break;
+ default:
+ break;
}
- _mesa_snprintf(filename, sizeof(filename), "shader_%u.%s", shader->Name, type);
+ snprintf(filename, sizeof(filename), "shader_%u.%s", shader->Name, type);
f = fopen(filename, "w");
if (!f) {
fprintf(stderr, "Unable to open %s for writing\n", filename);
return;
}
+#ifdef DEBUG
fprintf(f, "/* Shader %u source, checksum %u */\n", shader->Name, shader->SourceChecksum);
+#else
+ fprintf(f, "/* Shader %u source */\n", shader->Name);
+#endif
fputs(shader->Source, f);
fprintf(f, "\n");
* _mesa_write_shader_to_file function.
*/
void
-_mesa_append_uniforms_to_file(const struct gl_linked_shader *shader)
+_mesa_append_uniforms_to_file(const struct gl_program *prog)
{
- const struct gl_program *const prog = shader->Program;
const char *type;
char filename[100];
FILE *f;
- if (shader->Stage == MESA_SHADER_FRAGMENT)
+ if (prog->info.stage == MESA_SHADER_FRAGMENT)
type = "frag";
else
type = "vert";
- _mesa_snprintf(filename, sizeof(filename), "shader.%s", type);
+ snprintf(filename, sizeof(filename), "shader.%s", type);
f = fopen(filename, "a"); /* append */
if (!f) {
fprintf(stderr, "Unable to open %s for appending\n", filename);