Software shaders are implemented to allow development of shaders without underlying hardware support. They support the full feature set. Because they are implemented in software, they will not produce the best performance.
Version | Feature Set | Requirements |
---|---|---|
vs_2_sw | All the features of vs_2_x | Only supported by software vertex processing and a reference device. |
vs_3_sw | All the features of vs_3_0 | Only supported by software vertex processing and a reference device. |
ps_2_sw | All the features of ps_2_x | Only supported by a reference device. |
ps_3_sw | All the features of ps_3_0 | Only supported by a reference device. |
Some validations are relaxed for software shaders. This is useful for debugging and prototyping purposes. The following validations are relaxed: (all other validations remain the same)
Validation type | Relaxation |
---|---|
Instruction Counts: | This is relaxed for vs_2_sw, vs_3_sw and ps_2_sw, ps_3_sw. Unlimited instructions are allowed. |
Float Constant Counts: | This is relaxed for vs_2_sw, vs_3_sw and ps_2_sw, ps_3_sw. Up to 8192 constants are allowed. |
Integer Constant Counts: | This is relaxed for vs_2_sw, vs_3_sw and ps_2_sw, ps_3_sw. Up to 2048 constants are allowed. |
Boolean Constant Counts: | This is relaxed for vs_2_sw, vs_3_sw and ps_2_sw, ps_3_sw. Up to 2048 constants are allowed. |
Dependent-read depth: | This is relaxed for ps_2_sw. Like in vs_3_0 and ps_3_0, unlimited dependent reads are allowed. |
Number of flow control instructions and labels: | This is relaxed for vs_2_sw. Unlimited flow control instructions and upto 2048 labels are allowed. |
Loop count/start/step: | These are relaxed for vs_2_sw, vs_3_sw, ps_2_sw and ps_3_sw. Iteration start and interation step size for rep and loop instructions are 32-bit signed intergers. Interation count can be up to MAX_INT/64. |
Read-port limits: | vs_2_sw, vs_3_sw, ps_2_sw and ps_3_sw have no read-port limit. |
Number of interpolators: | There are 16 Registers - vs_3_0 (o#) in vs_3_sw and 10 ps_3_0 Registers (v#) for ps_3_sw. |