On 10/15/2013 09:53 AM, Ian Romanick wrote: > On 10/14/2013 10:12 AM, Anuj Phogat wrote: >> @@ -852,6 +858,9 @@ append_token(char *dst, gl_state_index k) >> case STATE_TEXENV_COLOR: >> append(dst, "texenv"); >> break; >> + case STATE_NUM_SAMPLES: >> + append(dst, "num.samples"); >> + break; > > There is some really broken code in append_token and > _mesa_program_state_string... and, of course, none of it is ever > exercised. :( > > Here's how this works... In ARB_vertex_program and ARB_fragment_program > (the ARB assembly shader extensions), there was a big structure-like > thing called "state". This is where all of the built-in variables that > represented things like gl_DepthRange.near or > gl_ModelViewProjectionMatrix lived. They were accessed as > state.depth.range (and the x, y, z, and w fields had the data) or > state.matrix.modelview. > > The state[] tokens passed to _mesa_program_state_string represents a > dereference of the assembly program state structure. Each element > (usually) represents one level of the dereference. So, gl_DepthRange is > state.depth.range is { STATE_DEPTH_RANGE, 0, 0 } and > gl_ModelViewProjectionMatrix[1] is state.matrix.modelview[1] is { > STATE_MVP_MATRIX, 1, 0 }. > > _mesa_program_state_string converts the list of tokens back into an > assembly-style string. When it gets { STATE_DEPTH_RANGE, 0, 0 }, it > should return "state.depth.range". When it gets { STATE_NUM_SAMPLES, 0, > 0 }, it should return "state.numsamples" (or similar). Right now each > of these queries returns... nothing. > > The "append(dst, ...)" should go in _mesa_program_state_string.
Ignore this. I missed the calls at the very top of _mesa_program_state_string: append(str, "state."); append_token(str, state[0]); Your code (other than maybe the name "num.samples") and the existing depth.range code is correct as-is. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev