Rune Petersen wrote:
> Keith Whitwell wrote:
> 
>>Rune Petersen wrote:
>>
>>>Keith Whitwell wrote:
>>>
>>>>Roland Scheidegger wrote:
>>>>
>>>>>Keith Whitwell wrote:
>>>>>I think Rune is rather refering to the fact that you can't change (not
>>>>>with "legal" means at least) the constant you got with
>>>>>_mesa_add_unnamed_constant.
>>>>
>>>>Ah right.  I missed that.
>>>>
>>>>
>>>>>I think there exist at least 2 solutions for that. The clean way would
>>>>>probably be to add some more INTERNAL_STATE (like i965 driver uses) so
>>>>>you use _mesa_add_state_reference instead, in this case mesa's shader
>>>>>code would need to update program parameter based on the drawable
>>>>>information - I'm not sure if accessing a driver's drawable
>>>>>information there would get messy). The easier solution would probably
>>>>>be to just directly manipulate the ParameterValues entry associated
>>>>>with the constant you added, easy though it might be considered
>>>>>somewhat hackish. Just don't forget you not only have to update the
>>>>>"constant" within r300UpdateWindow (if the currently bound fp requires
>>>>>it), but also when the active fp is switched to another one (and make
>>>>>sure that a parameter upload is actually triggered if it not already
>>>>>is upon drawable changes).
>>>>
>>>>I think the parameter approach is probably the right one.  This would
>>>>require that there be a callback into the driver to get this state, and
>>>>more importantly, the driver would have to set a bit in ctx->NewState
>>>>(perhaps _NEW_BUFFERS) to indicate that a statechange has occurred which
>>>>would affect that internal state atom.
>>>
>>>Thank you.
>>>
>>>
>>>I've hit a bit of a problem:
>>>I was planning to have state flags returned from a callback
>>>make_state_flags().
>>>something like:
>>>ctx->Driver.GetGenericStateFlags(state);
>>>
>>>The problem being that the context ctx is not a parameter in
>>>make_state_flags().
>>>
>>>Is there smart way of solving this?
>>
>>Rune,
>>
>>I don't quite understand what you want to do here.  Can you show me the 
>>code you'd like to have (ignoring the ctx argument issue)?  I would have 
>>thought that we could determine the state statically and just rely on 
>>the driver to set that state in ctx->NewState when necessary.
>>
> 
> 
> I am trying to make generic state vars that the drivers can use.
> 
> the way I read these functions:
> make_state_flags()  - returns the state flags should trigger an update
>                       of the state var.
> 
> _mesa_fetch_state() - fetches the state var.
> 
> In order to make generic state vars.
> - I need to get the flags via a callback to the driver from
> make_state_flags().
> 
> I need to fetch the vars via a callback to the driver from
> _mesa_fetch_state().
> 
> 
> make_state_flags()
> {
>     .....
>     case STATE_INTERNAL:
>     {
>          switch (state[1]) {
>             case STATE_NORMAL_SCALE:
>               .....
>                break;
>             case STATE_TEXRECT_SCALE:
>               .....
>                break;
>             case STATE_GENERIC1:
>                assert(ctx->Driver.FetchGenericState);
>                ctx->Driver.FetchGenericState(ctx, state, value);
>                break;
>          }
>     }
> }
> 
> _mesa_fetch_state()
> {
>       .....
>     case STATE_INTERNAL:
>         switch (state[1]) {
>             case STATE_NORMAL_SCALE:
>                 return _NEW_MODELVIEW;
>             case STATE_TEXRECT_SCALE:
>                 return _NEW_TEXTURE;
>             case STATE_GENERIC1:
>                 assert(ctx->Driver.GetGenericStateFlags);
>                 return ctx->Driver.GetGenericStateFlags(state);
>         }
> 
> }

It seems to me that in ctx->Driver.ProgramStringNotify() you can add 
any extra parameters you need to the program's parameters list.

Then, during state validation in the driver you can load/update any 
parameters you might have added.

In _mesa_fetch_state() we could change the default case for switch 
(state[i]) to be silent when it sees any state tokens it doesn't 
understand (rather than call _mesa_problem()).

Does that sound feasible?

-Brian

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to