On Sun, Sep 22, 2013 at 12:57 AM, Brian Paul <[email protected]> wrote: > On Fri, Sep 20, 2013 at 7:52 PM, Eric Anholt <[email protected]> wrote: >> Noticed while grepping through the code for something else. >> --- >> src/mesa/program/program.c | 36 ++++++++++++++++++++++-------------- >> 1 file changed, 22 insertions(+), 14 deletions(-) >> >> diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c >> index 2529c13..5dd68d9 100644 >> --- a/src/mesa/program/program.c >> +++ b/src/mesa/program/program.c >> @@ -55,27 +55,35 @@ _mesa_init_program(struct gl_context *ctx) >> * If this assertion fails, we need to increase the field >> * size for register indexes (see INST_INDEX_BITS). >> */ >> - ASSERT(ctx->Const.VertexProgram.MaxUniformComponents / 4 >> + STATIC_ASSERT(ctx->Const.VertexProgram.MaxUniformComponents / 4 >> <= (1 << INST_INDEX_BITS)); >> - ASSERT(ctx->Const.FragmentProgram.MaxUniformComponents / 4 >> + STATIC_ASSERT(ctx->Const.FragmentProgram.MaxUniformComponents / 4 >> <= (1 << INST_INDEX_BITS)); >> >> - ASSERT(ctx->Const.VertexProgram.MaxTemps <= (1 << INST_INDEX_BITS)); >> - ASSERT(ctx->Const.VertexProgram.MaxLocalParams <= (1 << >> INST_INDEX_BITS)); >> - ASSERT(ctx->Const.FragmentProgram.MaxTemps <= (1 << INST_INDEX_BITS)); >> - ASSERT(ctx->Const.FragmentProgram.MaxLocalParams <= (1 << >> INST_INDEX_BITS)); >> - >> - ASSERT(ctx->Const.VertexProgram.MaxUniformComponents <= 4 * >> MAX_UNIFORMS); >> - ASSERT(ctx->Const.FragmentProgram.MaxUniformComponents <= 4 * >> MAX_UNIFORMS); >> - >> - ASSERT(ctx->Const.VertexProgram.MaxAddressOffset <= (1 << >> INST_INDEX_BITS)); >> - ASSERT(ctx->Const.FragmentProgram.MaxAddressOffset <= (1 << >> INST_INDEX_BITS)); >> + STATIC_ASSERT(ctx->Const.VertexProgram.MaxTemps <= >> + (1 << INST_INDEX_BITS)); >> + STATIC_ASSERT(ctx->Const.VertexProgram.MaxLocalParams <= >> + (1 << INST_INDEX_BITS)); >> + STATIC_ASSERT(ctx->Const.FragmentProgram.MaxTemps <= >> + (1 << INST_INDEX_BITS)); >> + STATIC_ASSERT(ctx->Const.FragmentProgram.MaxLocalParams <= >> + (1 << INST_INDEX_BITS)); >> + >> + STATIC_ASSERT(ctx->Const.VertexProgram.MaxUniformComponents <= >> + 4 * MAX_UNIFORMS); >> + STATIC_ASSERT(ctx->Const.FragmentProgram.MaxUniformComponents <= >> + 4 * MAX_UNIFORMS); >> + >> + STATIC_ASSERT(ctx->Const.VertexProgram.MaxAddressOffset <= >> + (1 << INST_INDEX_BITS)); >> + STATIC_ASSERT(ctx->Const.FragmentProgram.MaxAddressOffset <= >> + (1 << INST_INDEX_BITS)); > > Are you sure about those? How does the compiler know the values of > ctx->Const.Foo at compile time? > > It's worrisome that our STATIC_ASSERT macro is silent at compile time > when the expression isn't a compile-time constant. The problem with > our macro now is variable-sized arrays are OK at compile time.
just as an aside the current S_A macro produces a warning on later gcc's. kinda a misfeature. Dave. _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
