A system to implement a geometry processing phase of tile-based rendering, the system comprising: a plurality of parallel geometry pipelines (502, 504), each geometry pipeline (502, 504) configured to: receive a subset of ordered geometry groups, each geometry group comprising vertex data for one or more vertices; generate, for each received geometry group, one or more geometry blocks associated with that geometry group, each geometry block comprising transformed vertex data relating to at least a portion of the vertices in the corresponding geometry group and primitive data for one or more primitives formed from the at least a portion of the vertices; compress each geometry block to generate a corresponding compressed geometry block and store the compressed geometry block in memory; and generate, for each geometry block, a corresponding primitive position block that is associated with the same geometry group as that geometry block, each primitive position block comprising position information relating to at least a portion of the primitives in the corresponding geometry block; and a geometry to tiling arbiter configured to receive the primitive position blocks generated by the plurality of geometry pipelines (502, 504) and forward the received primitive position blocks to a plurality of tiling pipelines (506, 508) in an order based on the order of the geometry groups. a plurality of parallel geometry pipelines (502, 504), each geometry pipeline (502, 504) configured to: receive a subset of ordered geometry groups, each geometry group comprising vertex data for one or more vertices; generate, for each received geometry group, one or more geometry blocks associated with that geometry group, each geometry block comprising transformed vertex data relating to at least a portion of the vertices in the corresponding geometry group and primitive data for one or more primitives formed from the at least a portion of the vertices; compress each geometry block to generate a corresponding compressed geometry block and store the compressed geometry block in memory; and generate, for each geometry block, a corresponding primitive position block that is associated with the same geometry group as that geometry block, each primitive position block comprising position information relating to at least a portion of the primitives in the corresponding geometry block; and receive a subset of ordered geometry groups, each geometry group comprising vertex data for one or more vertices; generate, for each received geometry group, one or more geometry blocks associated with that geometry group, each geometry block comprising transformed vertex data relating to at least a portion of the vertices in the corresponding geometry group and primitive data for one or more primitives formed from the at least a portion of the vertices; compress each geometry block to generate a corresponding compressed geometry block and store the compressed geometry block in memory; and generate, for each geometry block, a corresponding primitive position block that is associated with the same geometry group as that geometry block, each primitive position block comprising position information relating to at least a portion of the primitives in the corresponding geometry block; and a geometry to tiling arbiter configured to receive the primitive position blocks generated by the plurality of geometry pipelines (502, 504) and forward the received primitive position blocks to a plurality of tiling pipelines (506, 508) in an order based on the order of the geometry groups.