A tiling engine for use in a graphics processing system, the tiling engine comprising: a chain of sorting units (320, 322) comprising a top level sorting unit followed by one or more lower level sorting units, wherein: the top level sorting unit is configured to: determine which of a plurality of regions of a render space each of a plurality of primitives, at least partially, falls within; and for each region a primitive, at least partially, falls within, store an identifier of that primitive in a queue (402 0 -402 N) of the top level sorting unit that is associated with that region; and each of the one or more lower level sorting units is configured to: select one or more queues of a preceding sorting unit in the chain to process; for each of the selected queues, determine which of a plurality of sub-regions of the region associated with the selected queue each of the primitives identified in the selected queue, at least partially, falls within; for each sub-region a primitive, at least partially, falls within, store an identifier of that primitive in a queue (406 0 -406 K) of the lower level sorting unit that is associated with that sub-region; and for each selected queue of the preceding sorting unit in the chain, remove the primitive identifiers from the selected queue; and an output unit configured to output the primitives identified in the queues of a last lower level sorting unit in the chain on a queue by queue basis. a chain of sorting units (320, 322) comprising a top level sorting unit followed by one or more lower level sorting units, wherein: the top level sorting unit is configured to: determine which of a plurality of regions of a render space each of a plurality of primitives, at least partially, falls within; and for each region a primitive, at least partially, falls within, store an identifier of that primitive in a queue (402 0 -402 N) of the top level sorting unit that is associated with that region; and each of the one or more lower level sorting units is configured to: select one or more queues of a preceding sorting unit in the chain to process; for each of the selected queues, determine which of a plurality of sub-regions of the region associated with the selected queue each of the primitives identified in the selected queue, at least partially, falls within; for each sub-region a primitive, at least partially, falls within, store an identifier of that primitive in a queue (406 0 -406 K) of the lower level sorting unit that is associated with that sub-region; and for each selected queue of the preceding sorting unit in the chain, remove the primitive identifiers from the selected queue; and the top level sorting unit is configured to: determine which of a plurality of regions of a render space each of a plurality of primitives, at least partially, falls within; and for each region a primitive, at least partially, falls within, store an identifier of that primitive in a queue (402 0 -402 N) of the top level sorting unit that is associated with that region; and determine which of a plurality of regions of a render space each of a plurality of primitives, at least partially, falls within; and for each region a primitive, at least partially, falls within, store an identifier of that primitive in a queue (402 0 -402 N) of the top level sorting unit that is associated with that region; and each of the one or more lower level sorting units is configured to: select one or more queues of a preceding sorting unit in the chain to process; for each of the selected queues, determine which of a plurality of sub-regions of the region associated with the selected queue each of the primitives identified in the selected queue, at least partially, falls within; for each sub-region a primitive, at least partially, falls within, store an identifier of that primitive in a queue (406 0 -406 K) of the lower level sorting unit that is associated with that sub-region; and for each selected queue of the preceding sorting unit in the chain, remove the primitive identifiers from the selected queue; and select one or more queues of a preceding sorting unit in the chain to process; for each of the selected queues, determine which of a plurality of sub-regions of the region associated with the selected queue each of the primitives identified in the selected queue, at least partially, falls within; for each sub-region a primitive, at least partially, falls within, store an identifier of that primitive in a queue (406 0 -406 K) of the lower level sorting unit that is associated with that sub-region; and for each selected queue of the preceding sorting unit in the chain, remove the primitive identifiers from the selected queue; and an output unit configured to output the primitives identified in the queues of a last lower level sorting unit in the chain on a queue by queue basis.