mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-19 11:28:15 +02:00
First, the surface dimensions are used to determine the range of valid pages that the data in the buffer overlaps, then rows are removed from the surface until it does not overfetch into any neighboring pages. If any rows were removed, an extra BTI is set up with a texel buffer that views the contents of all the rows that were removed, and the shader is compiled with a branch to sample the last rows through the texel buffer instead of the main surface. Using the texel buffer allows it to access the last rows without dealing with overfetch or weird alignment hacks, and restricting texel buffer usage to just the part of the surface that can't be accessed safely ensures that we don't significantly impact performance for any buffer to image copy that is unlucky enough to be close to a page boundry. Co-authored-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40149> |
||
|---|---|---|
| .. | ||
| blorp.c | ||
| blorp.h | ||
| blorp_blit.c | ||
| blorp_brw.c | ||
| blorp_clear.c | ||
| blorp_elk.c | ||
| blorp_genX_exec_brw.h | ||
| blorp_genX_exec_elk.h | ||
| blorp_nir_builder.h | ||
| blorp_priv.h | ||
| blorp_shaders.cl | ||
| meson.build | ||