This patch moves the dirty rect storage from ImageResource to CachedImageInfo. This is because cache entries may be updated independently across frame updates, and thus cannot share the dirty rect state. We no longer clear the dirty rect when we get an update without a dirty rect. This is because we can get a subsequent update (before applying the previous) which provides a new dirty rect, and we still want to reupload the whole image. Instead we now store a dirty rect for the whole descriptor. In addition to special handling for tiled requests, we also properly handle requests which change the ImageRendering type. Before we would take the dirty rect for the first request and ignore it for the rest.