This gives us the possibility of describing other GOB formats in the
future. This also cleans things up a bit as it replaces all of the uses
of GOB_WIDTH/DEPTH with an extent which we can change in the future.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31410>
We add a units generic parameter to Extent4D and Offset4D and then make
every helper take and return the right type. The mul and div_* helpers
only half-enforce types but it's better than nothing. We leave them
non-public so no one outside extent.rs uses them.
Reviewed-by: Lina Versace <linyaa@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28639>