Hi
and dlls/wined3d/wined3d_private.h #define MAX_SAMPLERS 16
That's the maximum d3d9 supports, not necessarily what the hardware can do. Unsupported samplers would be wasted. Worse, d3d10 will support a lot more than 16 samplers.
Right, we would waste 13*8 = 104 bytes per unsupported sampler. How much samplers does d3d10 support?
If we use run-time dynamic values for the state table then we loose the ability to access a state with its state number, and we loose the ability to set up a constant table in the code. We'd have to allocate it at device creation, fill it there and keep a table per device. I prefer to waste 10 or 20 kb for unsupported textures and samplers for the ability to access the table with the state number as index and to have it declared constant. If the memory is needed the operating system can just kick it from the memory in this case, otherwise it has to be paged out.