- Packing/bitfield/conversion functions DONE
- Enhanced textureGather DONE
- Geometry shader instancing DONE
- - Geometry shader multiple streams DONE (i965)
+ - Geometry shader multiple streams DONE (i965, nvc0)
- Enhanced per-sample shading DONE
- Interpolation functions started (Chris)
- New overload resolution rules DONE
info->out[pso->output[i].register_index].slot[s + c];
tfb->varying_count[b] = MAX2(tfb->varying_count[b], p);
+ tfb->stream[b] = pso->output[i].stream;
}
for (b = 0; b < 4; ++b) // zero unused indices (looks nicer)
for (c = tfb->varying_count[b]; c & 3; ++c)
struct nvc0_transform_feedback_state {
uint32_t stride[4];
+ uint8_t stream[4];
uint8_t varying_count[4];
uint8_t varying_index[4][128];
};
case PIPE_QUERY_PRIMITIVES_GENERATED:
case PIPE_QUERY_PRIMITIVES_EMITTED:
q->is64bit = TRUE;
+ q->index = index;
space = 32;
break;
case PIPE_QUERY_TIME_ELAPSED:
case PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS:
return 1024;
case PIPE_CAP_MAX_VERTEX_STREAMS:
- return 1;
+ return 4;
case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
return 256;
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
unsigned n = (tfb->varying_count[b] + 3) / 4;
BEGIN_NVC0(push, NVC0_3D(TFB_STREAM(b)), 3);
- PUSH_DATA (push, 0);
+ PUSH_DATA (push, tfb->stream[b]);
PUSH_DATA (push, tfb->varying_count[b]);
PUSH_DATA (push, tfb->stride[b]);
BEGIN_NVC0(push, NVC0_3D(TFB_VARYING_LOCS(b, 0)), n);