OK, I'll add the spec quote and fixup the two piglits which are asserting the old behavior, and push it all tonight.
-- Chris On Wed, May 22, 2013 at 9:33 AM, Ian Romanick <i...@freedesktop.org> wrote: > On 05/18/2013 11:18 PM, Chris Forbes wrote: >> >> Relaxes the validation of >> >> OPTION ARB_precision_hint_{nicest,fastest}; >> >> to allow duplicate options. The spec says that both /nicest/ and >> /fastest/ cannot be specified together, but could be interpreted >> either way for respecification of the same option. >> >> Other drivers (NVIDIA etc) accept this, and at least one Unity3D game >> expects it to succeed (Kerbal Space Program). > > > NOTE: This is a candidate for stable release branches. > > >> Signed-off-by: Chris Forbes <chr...@ijw.co.nz> >> --- >> src/mesa/program/program_parse_extra.c | 16 +++++++--------- >> 1 file changed, 7 insertions(+), 9 deletions(-) >> >> diff --git a/src/mesa/program/program_parse_extra.c >> b/src/mesa/program/program_parse_extra.c >> index 4d92848..eb1fccc 100644 >> --- a/src/mesa/program/program_parse_extra.c >> +++ b/src/mesa/program/program_parse_extra.c >> @@ -194,15 +194,13 @@ _mesa_ARBfp_parse_option(struct asm_parser_state >> *state, const char *option) >> } else if (strncmp(option, "precision_hint_", 15) == 0) { >> option += 15; >> >> - if (state->option.PrecisionHint == OPTION_NONE) { >> - if (strcmp(option, "nicest") == 0) { >> - state->option.PrecisionHint = OPTION_NICEST; >> - return 1; >> - } else if (strcmp(option, "fastest") == 0) { >> - state->option.PrecisionHint = OPTION_FASTEST; >> - return 1; >> - } >> - } > > > I think it's worth quoting the bit of spec that Eric mentioned in a comment > here. With or without that change, this patch is > > Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> > > >> + if (strcmp(option, "nicest") == 0 && state->option.PrecisionHint >> != OPTION_FASTEST) { >> + state->option.PrecisionHint = OPTION_NICEST; >> + return 1; >> + } else if (strcmp(option, "fastest") == 0 && >> state->option.PrecisionHint != OPTION_NICEST) { >> + state->option.PrecisionHint = OPTION_FASTEST; >> + return 1; >> + } >> >> return 0; >> } else if (strcmp(option, "draw_buffers") == 0) { >> > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev