> Regarding the concern of storing the decoded strided data after
> finishing drawing: This is intentional, the decoded vertex declaration
> will remain valid after the draw is finished and the arrays loaded.
> Future draws can use it, if the state is not dirtified again.
>
This sounds like a good idea...
> Wrt the upward references: When we have multithreading with multiple
> contexts we will need a per-context tracking of most of the stuff we
> have in the device now(last_was_rhw, ...). This structure does not
> exist yet, and I do not see a point in passing the device impl to
> every function when we can get it from the stateblock too.
I still think this caching stuff needs to go into its own structure [
maybe device->cache or something like that ]. I can see how it's a bit
different from the standard stateblock data, since it's just a cache,
rather than something that's set/get by the application - cache state vs
configured state. It's not so clear to me that this is all per-thread
data - the strided streams are directly tied to the vertex declaration
and stream data, which is in turn shared across threads as part of the
stateblock.
===========
Note: you just made drawPrimitiveTraceDataLocations into dead code.
(previously called in d3d8 fixed function code path).
I don't care much for this function, but please remove it if getting rid
of its callers.