So I didn't touch r300compiler, but r300g now compiles after having declarations and code untangled. As nha so gently points out, we shouldn't have to do this just to comply with MSVC compilers.tags/mesa_7_7_rc1
@@ -1,6 +1,10 @@ | |||
Import('*') | |||
r300compiler = SConscript('#/src/mesa/drivers/dri/r300/compiler/SConscript') | |||
env = env.Clone() | |||
# add the paths for r300compiler | |||
env.Append(CPPPATH = ['#/src/mesa/drivers/dri/r300/compiler', '#/include', '#/src/mesa']) | |||
r300 = env.ConvenienceLibrary( | |||
target = 'r300', | |||
@@ -23,7 +27,8 @@ r300 = env.ConvenienceLibrary( | |||
'r300_vs.c', | |||
'r300_surface.c', | |||
'r300_texture.c', | |||
]) | |||
'r300_tgsi_to_rc.c', | |||
] + r300compiler) + r300compiler | |||
Export('r300') | |||
@@ -48,6 +48,8 @@ void r300_init_debug(struct r300_context * ctx) | |||
{ | |||
const char * options = debug_get_option("RADEON_DEBUG", 0); | |||
boolean printhint = false; | |||
size_t length; | |||
struct debug_option * opt; | |||
if (options) { | |||
while(*options) { | |||
@@ -56,8 +58,7 @@ void r300_init_debug(struct r300_context * ctx) | |||
continue; | |||
} | |||
size_t length = strcspn(options, " ,"); | |||
struct debug_option * opt; | |||
length = strcspn(options, " ,"); | |||
for(opt = debug_options; opt->name; ++opt) { | |||
if (!strncmp(options, opt->name, length)) { | |||
@@ -81,7 +82,7 @@ void r300_init_debug(struct r300_context * ctx) | |||
if (printhint || ctx->debug & DBG_HELP) { | |||
debug_printf("You can enable debug output by setting the RADEON_DEBUG environment variable\n" | |||
"to a comma-separated list of debug options. Available options are:\n"); | |||
for(struct debug_option * opt = debug_options; opt->name; ++opt) { | |||
for(opt = debug_options; opt->name; ++opt) { | |||
debug_printf(" %s: %s\n", opt->name, opt->description); | |||
} | |||
} |
@@ -257,12 +257,13 @@ static void transform_texture(struct rc_instruction * dst, struct tgsi_instructi | |||
static void transform_instruction(struct tgsi_to_rc * ttr, struct tgsi_full_instruction * src) | |||
{ | |||
struct rc_instruction * dst; | |||
int i; | |||
if (src->Instruction.Opcode == TGSI_OPCODE_END) | |||
return; | |||
struct rc_instruction * dst = rc_insert_new_instruction(ttr->compiler, ttr->compiler->Program.Instructions.Prev); | |||
int i; | |||
dst = rc_insert_new_instruction(ttr->compiler, ttr->compiler->Program.Instructions.Prev); | |||
dst->I.Opcode = translate_opcode(src->Instruction.Opcode); | |||
dst->I.SaturateMode = translate_saturate(src->Instruction.Saturate); | |||
@@ -35,6 +35,8 @@ static void set_vertex_inputs_outputs(struct r300_vertex_program_compiler * c) | |||
{ | |||
struct r300_vertex_shader * vs = c->UserData; | |||
struct tgsi_shader_info* info = &vs->info; | |||
struct tgsi_parse_context parser; | |||
struct tgsi_full_declaration * decl; | |||
boolean pointsize = false; | |||
int out_colors = 0; | |||
int colors = 0; | |||
@@ -62,8 +64,6 @@ static void set_vertex_inputs_outputs(struct r300_vertex_program_compiler * c) | |||
} | |||
} | |||
struct tgsi_parse_context parser; | |||
tgsi_parse_init(&parser, vs->state.tokens); | |||
while (!tgsi_parse_end_of_tokens(&parser)) { | |||
@@ -72,7 +72,7 @@ static void set_vertex_inputs_outputs(struct r300_vertex_program_compiler * c) | |||
if (parser.FullToken.Token.Type != TGSI_TOKEN_TYPE_DECLARATION) | |||
continue; | |||
struct tgsi_full_declaration * decl = &parser.FullToken.FullDeclaration; | |||
decl = &parser.FullToken.FullDeclaration; | |||
if (decl->Declaration.File != TGSI_FILE_OUTPUT) | |||
continue; |
@@ -0,0 +1,30 @@ | |||
Import('*') | |||
env = env.Clone() | |||
env.Append(CPPPATH = '#/include') | |||
env.Append(CPPPATH = '#/src/mesa') | |||
# temporary fix | |||
env['CFLAGS'] = str(env['CFLAGS']).replace('-Werror=declaration-after-statement', '') | |||
r300compiler = env.ConvenienceLibrary( | |||
target = 'r300compiler', | |||
source = [ | |||
'radeon_code.c', | |||
'radeon_compiler.c', | |||
'radeon_nqssadce.c', | |||
'radeon_program.c', | |||
'radeon_program_alu.c', | |||
'radeon_program_pair.c', | |||
'r3xx_fragprog.c', | |||
'r300_fragprog.c', | |||
'r300_fragprog_swizzle.c', | |||
'r300_fragprog_emit.c', | |||
'r500_fragprog.c', | |||
'r500_fragprog_emit.c', | |||
'r3xx_vertprog.c', | |||
'r3xx_vertprog_dump.c', | |||
'memory_pool.c', | |||
]) | |||
Return('r300compiler') |