1. A method of providing vertex attributes for a primitive program, comprising: specifying an unsized attribute array within the primitive program for an attribute of an input vertex, wherein specification of the unsized attribute array is independent of an input primitive type that will be processed by the primitive program; and specifying the input primitive type that will be processed by the primitive program, wherein a size of the unsized attribute array is determined based on the primitive input type when the primitive program is compiled using a host processor.