Keith Whitwell wrote: >> Now I remember why I can't use radeon->dri.drawable, at least not >> directly when the shader code is added: >> >> When the window size changes the constants have to be updated. >> >> Is there a way for the driver to update a constant after construction? >> > > This is an age-old dilemma... The i965 driver gets around this by > locking the hardware before validating and emitting state and drawing > commands and unlocking again afterwards - so the window can't change > size in the meantime. Other drivers tend to just deal with the > occasional incorrectness. > > In general this is something we need to get a bit better at. API's like > DX9 and GL/ES do away with frontbuffer rendering which gives the drivers > a lot more flexibility in terms of dealing with window moves and > resizes, allowing them to pick a time to respond to a resize. With > private backbuffers we might get the same benefits at least in the > common case.
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. 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). Roland ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV -- _______________________________________________ Dri-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/dri-devel
