A hierarchical triangle rasterization method, comprising the steps of: (a) walking a plurality of tiles of pixels and determining if each tile is valid; (b) breaking each valid tile into a plurality of subtiles and determining if each subtile is valid; (c) breaking each valid subtile into a plurality of quads and determining if each quad is valid; and (d) rendering pixels for each valid quad, wherein steps (a) through (d) are performed in parallel, characterized in that validation of a block, wherein the block is one of a tile, a subtile, or a quad, comprises: checking the four corners of the block against the three edges of the triangle and returning a combined result; determining if the block contains any pixels inside the triangle, based on the combined result; determining that the block is valid, if the block contains at least one pixel inside the triangle; and determining whether there is a valid block on the left and right of the block to determine in which direction to continue with step (a), wherein checking if a pixel in the block sits on the left, right, or exactly on a line of a triangle is performed using edge equations, wherein an initial point, a direction of rasterization and a rasterization pattern is dynamically selected based on a relative position between the triangle and a clipping window; and further characterized in that: rasterization starts at an initial point inside the triangle; rasterization walks blocks of each level in a hierarchical manner until a lowest level block is reached; at a certain block level: rasterization first walks in one horizontal direction until it reaches an outer bound of the triangle or the clipping window, then in the other horizontal direction from the initial point until it reaches an outer bound of the triangle or the clipping window, and then proceeds either upwards or downwards, based on a location of the initial point, to a next line of blocks until it reaches an outer bound of the triangle or the clipping window. (a) walking a plurality of tiles of pixels and determining if each tile is valid; (b) breaking each valid tile into a plurality of subtiles and determining if each subtile is valid; (c) breaking each valid subtile into a plurality of quads and determining if each quad is valid; and (d) rendering pixels for each valid quad, wherein steps (a) through (d) are performed in parallel, checking the four corners of the block against the three edges of the triangle and returning a combined result; determining if the block contains any pixels inside the triangle, based on the combined result; determining that the block is valid, if the block contains at least one pixel inside the triangle; and determining whether there is a valid block on the left and right of the block to determine in which direction to continue with step (a), wherein checking if a pixel in the block sits on the left, right, or exactly on a line of a triangle is performed using edge equations, wherein an initial point, a direction of rasterization and a rasterization pattern is dynamically selected based on a relative position between the triangle and a clipping window; and further characterized in that: rasterization starts at an initial point inside the triangle; rasterization walks blocks of each level in a hierarchical manner until a lowest level block is reached; at a certain block level: rasterization first walks in one horizontal direction until it reaches an outer bound of the triangle or the clipping window, then in the other horizontal direction from the initial point until it reaches an outer bound of the triangle or the clipping window, and then proceeds either upwards or downwards, based on a location of the initial point, to a next line of blocks until it reaches an outer bound of the triangle or the clipping window. rasterization starts at an initial point inside the triangle; rasterization walks blocks of each level in a hierarchical manner until a lowest level block is reached; at a certain block level: rasterization first walks in one horizontal direction until it reaches an outer bound of the triangle or the clipping window, then in the other horizontal direction from the initial point until it reaches an outer bound of the triangle or the clipping window, and then proceeds either upwards or downwards, based on a location of the initial point, to a next line of blocks until it reaches an outer bound of the triangle or the clipping window.