/**
* Process a PS output declaration.
* Note that we don't actually emit a SVGA3DOpDcl for PS outputs.
+ * \idx register index, such as OUT[2] (not semantic index)
*/
static boolean
ps30_output(struct svga_shader_emitter *emit,
if (semantic.Index == 0) {
unsigned i;
for (i = 0; i < emit->key.fkey.write_color0_to_n_cbufs; i++) {
- emit->output_map[i] = dst_register(SVGA3DREG_TEMP,
+ emit->output_map[idx+i] = dst_register(SVGA3DREG_TEMP,
emit->nr_hw_temp++);
- emit->temp_color_output[i] = emit->output_map[i];
+ emit->temp_color_output[i] = emit->output_map[idx+i];
emit->true_color_output[i] = dst_register(SVGA3DREG_COLOROUT,
i);
}
unsigned label[32];
unsigned nr_labels;
+ /** input/output register mappings, indexed by register number */
struct src_register input_map[PIPE_MAX_ATTRIBS];
SVGA3dShaderDestToken output_map[PIPE_MAX_ATTRIBS];
/* shared output for depth and fog */
SVGA3dShaderDestToken vs_depth_fog;
- /* PS output colors */
+ /* PS output colors (indexed by color semantic index) */
SVGA3dShaderDestToken temp_color_output[PIPE_MAX_COLOR_BUFS];
SVGA3dShaderDestToken true_color_output[PIPE_MAX_COLOR_BUFS];