An apparatus comprising: a plurality of vertical scalers; a plurality of horizontal scalers; and control logic configured to: determine a number of pixels to fetch from a memory based at least in part on a step size and a number of the plurality of vertical scalers; and fetch the number of pixels of a single source image from the memory; and wherein each of the plurality of vertical scalers is configured to: select pixels for vertical scaling from the fetched pixels in parallel with other vertical scalers of the plurality of vertical scalers selecting pixels, wherein the selected pixels are centered around a first pixel located a number of pixels equal to one step size from a second pixel that other selected pixels are centered around for an adjacent vertical scaler of the plurality of vertical scalers; and generate a vertically scaled pixel from the selected pixels; and wherein each of the plurality of horizontal scalers is configured to: set a pointer to an initial value that is less than a given pixel position used for indicating a horizontally scaled pixel is to be generated; receive a plurality of vertically scaled pixels from a respective vertical scaler without fetching vertically scaled pixels from the memory; increment the pointer for each received vertically scaled pixel; start generating horizontally scaled pixels from the received plurality of vertically scaled pixels in response to determining a match between the pointer and the given pixel position; and forgo starting generating horizontally scaled pixels from the received plurality of vertically scaled pixels in response to determining no match between the pointer and the given pixel position. a plurality of vertical scalers; a plurality of horizontal scalers; and control logic configured to: determine a number of pixels to fetch from a memory based at least in part on a step size and a number of the plurality of vertical scalers; and fetch the number of pixels of a single source image from the memory; and wherein each of the plurality of vertical scalers is configured to: select pixels for vertical scaling from the fetched pixels in parallel with other vertical scalers of the plurality of vertical scalers selecting pixels, wherein the selected pixels are centered around a first pixel located a number of pixels equal to one step size from a second pixel that other selected pixels are centered around for an adjacent vertical scaler of the plurality of vertical scalers; and generate a vertically scaled pixel from the selected pixels; and wherein each of the plurality of horizontal scalers is configured to: set a pointer to an initial value that is less than a given pixel position used for indicating a horizontally scaled pixel is to be generated; receive a plurality of vertically scaled pixels from a respective vertical scaler without fetching vertically scaled pixels from the memory; increment the pointer for each received vertically scaled pixel; start generating horizontally scaled pixels from the received plurality of vertically scaled pixels in response to determining a match between the pointer and the given pixel position; and forgo starting generating horizontally scaled pixels from the received plurality of vertically scaled pixels in response to determining no match between the pointer and the given pixel position. determine a number of pixels to fetch from a memory based at least in part on a step size and a number of the plurality of vertical scalers; and fetch the number of pixels of a single source image from the memory; and wherein each of the plurality of vertical scalers is configured to: select pixels for vertical scaling from the fetched pixels in parallel with other vertical scalers of the plurality of vertical scalers selecting pixels, wherein the selected pixels are centered around a first pixel located a number of pixels equal to one step size from a second pixel that other selected pixels are centered around for an adjacent vertical scaler of the plurality of vertical scalers; and generate a vertically scaled pixel from the selected pixels; and wherein each of the plurality of horizontal scalers is configured to: set a pointer to an initial value that is less than a given pixel position used for indicating a horizontally scaled pixel is to be generated; set a pointer to an initial value that is less than a given pixel position used for indicating a horizontally scaled pixel is to be generated; receive a plurality of vertically scaled pixels from a respective vertical scaler without fetching vertically scaled pixels from the memory; increment the pointer for each received vertically scaled pixel; start generating horizontally scaled pixels from the received plurality of vertically scaled pixels in response to determining a match between the pointer and the given pixel position; and forgo starting generating horizontally scaled pixels from the received plurality of vertically scaled pixels in response to determining no match between the pointer and the given pixel position.