A method comprising: executing, with a shader unit of a graphics processor , a merged vertex/geometry shader program that performs vertex shader processing and geometry shader processing, and that generates multiple output vertices for each input vertex that is received by the shader program, wherein the graphics processor is configurable to operate in a first shader program execution mode and configurable to operate in a second shader program execution mode different than the first shader program execution mode, wherein executing, with the shader unit of the graphics processor , the merged vertex/geometry shader program comprises executing, with the shader unit , a plurality of instances of the merged vertex/geometry shader program, wherein each of the instances of the merged vertex/geometry shader program is configurable to perform the vertex shader processing with respect to a vertex that is assigned to the respective instance of the merged vertex/geometry shader program and the geometry shader processing with respect to a primitive that is assigned to the respective instance of the merged vertex/geometry shader program, wherein, when operating in the first shader program execution mode, each of a plurality of primitives is assigned to one merged vertex/geometry shader instance for geometry shader processing and each of the instances of the merged vertex/geometry shader program outputs M output vertices, where M is an integer greater than or equal to two, and wherein, when operating in the second shader program execution mode, each of the plurality of primitives is assigned to N merged vertex/geometry shader instances for geometry shader processing and each of the instances of the merged vertex/geometry shader program outputs one output vertex, where N is an integer greater than or equal to two and M is less than or equal to N. executing, with a shader unit of a graphics processor , a merged vertex/geometry shader program that performs vertex shader processing and geometry shader processing, and that generates multiple output vertices for each input vertex that is received by the shader program, wherein the graphics processor is configurable to operate in a first shader program execution mode and configurable to operate in a second shader program execution mode different than the first shader program execution mode, wherein executing, with the shader unit of the graphics processor , the merged vertex/geometry shader program comprises executing, with the shader unit , a plurality of instances of the merged vertex/geometry shader program, wherein each of the instances of the merged vertex/geometry shader program is configurable to perform the vertex shader processing with respect to a vertex that is assigned to the respective instance of the merged vertex/geometry shader program and the geometry shader processing with respect to a primitive that is assigned to the respective instance of the merged vertex/geometry shader program, wherein, when operating in the first shader program execution mode, each of a plurality of primitives is assigned to one merged vertex/geometry shader instance for geometry shader processing and each of the instances of the merged vertex/geometry shader program outputs M output vertices, where M is an integer greater than or equal to two, and wherein, when operating in the second shader program execution mode, each of the plurality of primitives is assigned to N merged vertex/geometry shader instances for geometry shader processing and each of the instances of the merged vertex/geometry shader program outputs one output vertex, where N is an integer greater than or equal to two and M is less than or equal to N. <EOS>