A graphics processor system, comprising: a processor; memory communicatively coupled to the processor; and logic communicatively coupled to the processor and memory to: determine one or more conditions for a set of primitives, and perform primitive replication at a vertex shader based on the determined one or more conditions for the set of primitives, characterized in that the logic is further to: determine a first condition, wherein the first condition is met if only a layer and/or a viewport together with position output attributes are changed per emitted vertex in a geometry shader; determine a second condition, wherein the second condition is met if a number of declared emitted vertices in the geometry shader is less than a threshold; determine a third condition, wherein the third condition is met if each vertex from the geometry is emitted into one of a separate render target and a separate viewport; and determine if each of the first, second, and third conditions are met, and if met, to: move operations related to position, layer, viewport calculations, and primitive replication from the geometry shader to the vertex shader, and move operations related to all other output attributes from the geometry shader to the vertex shader. a processor; memory communicatively coupled to the processor; and logic communicatively coupled to the processor and memory to: determine one or more conditions for a set of primitives, and perform primitive replication at a vertex shader based on the determined one or more conditions for the set of primitives, determine one or more conditions for a set of primitives, and perform primitive replication at a vertex shader based on the determined one or more conditions for the set of primitives, characterized in that the logic is further to: determine a first condition, wherein the first condition is met if only a layer and/or a viewport together with position output attributes are changed per emitted vertex in a geometry shader; determine a second condition, wherein the second condition is met if a number of declared emitted vertices in the geometry shader is less than a threshold; determine a third condition, wherein the third condition is met if each vertex from the geometry is emitted into one of a separate render target and a separate viewport; and determine if each of the first, second, and third conditions are met, and if met, to: move operations related to position, layer, viewport calculations, and primitive replication from the geometry shader to the vertex shader, and move operations related to all other output attributes from the geometry shader to the vertex shader. determine a first condition, wherein the first condition is met if only a layer and/or a viewport together with position output attributes are changed per emitted vertex in a geometry shader; determine a second condition, wherein the second condition is met if a number of declared emitted vertices in the geometry shader is less than a threshold; determine a third condition, wherein the third condition is met if each vertex from the geometry is emitted into one of a separate render target and a separate viewport; and determine if each of the first, second, and third conditions are met, and if met, to: move operations related to position, layer, viewport calculations, and primitive replication from the geometry shader to the vertex shader, and move operations related to all other output attributes from the geometry shader to the vertex shader. move operations related to position, layer, viewport calculations, and primitive replication from the geometry shader to the vertex shader, and move operations related to all other output attributes from the geometry shader to the vertex shader.