Calculate correct surface-to-buffer matrix with only upscaled viewport
Currently, if a wp_viewport upscales the surface but doesn't set the source rectangle, the surface-to-buffer matrix will be calculated incorrectly.
If the source rect is not set, we need to calculate the source size based on the buffer size and compare it with the destination size. If the two are not the same, add a scale transform.
BUG: 445346