From 5de66c0da2dbe4ebafd7cc265d424f155cf2a6d9 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 31 May 2011 16:25:37 -0400 Subject: [PATCH] Run preshaders during MOJOSHADER_glProgramReady(). --- mojoshader_opengl.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/mojoshader_opengl.c b/mojoshader_opengl.c index d97bbbf2..3a9a5a5f 100644 --- a/mojoshader_opengl.c +++ b/mojoshader_opengl.c @@ -1826,9 +1826,32 @@ void MOJOSHADER_glProgramReady(void) GLfloat *dstf = program->vs_uniforms_float4; GLint *dsti = program->vs_uniforms_int4; GLint *dstb = program->vs_uniforms_bool; + const MOJOSHADER_preshader *preshader = NULL; + int ran_preshader = 0; uint32 i; - program->generation = ctx->generation; + if (program->vertex) + { + preshader = program->vertex->parseData->preshader; + if (preshader) + { + MOJOSHADER_runPreshader(preshader, ctx->vs_reg_file_f); + ran_preshader = 1; + } // if + } // if + + if (program->fragment) + { + preshader = program->fragment->parseData->preshader; + if (preshader) + { + MOJOSHADER_runPreshader(preshader, ctx->ps_reg_file_f); + ran_preshader = 1; + } // if + } // if + + if (ran_preshader) + ctx->generation++; for (i = 0; i < count; i++) { @@ -1892,6 +1915,8 @@ void MOJOSHADER_glProgramReady(void) // !!! FIXME: set constants that overlap the array. } // for + program->generation = ctx->generation; + ctx->profilePushUniforms(); } // if } // MOJOSHADER_glProgramReady