A graphics processing system (200, 1200) configured to process primitive fragments using a rendering space which is sub-divided into a plurality of tiles, the system comprising: a plurality of processing engines (216, 1216) configured to apply one or both of texturing and shading to primitive fragments; a cache system (218, 1218) configured to store graphics data for use in processing the primitive fragments, the cache system including a plurality of cache subsystems (220, 1220), wherein each of said plurality of cache subsystems is coupled to a respective set of a plurality of the processing engines (216, 1216); and a tile allocation unit (224, 1224) configured to operate in a plurality of allocation modes to allocate tiles to the processing engines, wherein the plurality of allocation modes includes: (i) a spatial allocation mode in which groups of spatially adjacent tiles are allocated to the processing engines according to a spatial allocation scheme, said spatial allocation scheme ensuring that each of said groups of spatially adjacent tiles is allocated to a set of processing engines (216, 1216) which are coupled to the same cache subsystem (220, 1220), and (ii) a load balancing allocation mode in which tiles are allocated to the processing engines based on computational loads of the processing engines, wherein the tile allocation unit is configured to maintain, for each of the processing engines, a queue of allocated tiles which are allocated for processing by that processing engine, and wherein the tile allocation unit is configured to monitor the state of the queues to determine one of the allocation modes in which tiles are to be allocated to the processing engines. a plurality of processing engines (216, 1216) configured to apply one or both of texturing and shading to primitive fragments; a cache system (218, 1218) configured to store graphics data for use in processing the primitive fragments, the cache system including a plurality of cache subsystems (220, 1220), wherein each of said plurality of cache subsystems is coupled to a respective set of a plurality of the processing engines (216, 1216); and a tile allocation unit (224, 1224) configured to operate in a plurality of allocation modes to allocate tiles to the processing engines, wherein the plurality of allocation modes includes: (i) a spatial allocation mode in which groups of spatially adjacent tiles are allocated to the processing engines according to a spatial allocation scheme, said spatial allocation scheme ensuring that each of said groups of spatially adjacent tiles is allocated to a set of processing engines (216, 1216) which are coupled to the same cache subsystem (220, 1220), and (ii) a load balancing allocation mode in which tiles are allocated to the processing engines based on computational loads of the processing engines, wherein the tile allocation unit is configured to maintain, for each of the processing engines, a queue of allocated tiles which are allocated for processing by that processing engine, and wherein the tile allocation unit is configured to monitor the state of the queues to determine one of the allocation modes in which tiles are to be allocated to the processing engines.