turnip: clamp per-tile scissors to max viewport size in binning pass
Tiles on the edge may cross maximum viewport size, we have to clamp per-tile scissor to maximum allowed viewport dimensions. Add MAX_VIEWPORT_SIZE constant along the way. Fixes vkd3d test "test_draw_uav_only" Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13197>
This commit is contained in:
parent
492e182a8a
commit
d2543658ef
|
@ -609,8 +609,8 @@ tu6_emit_tile_select(struct tu_cmd_buffer *cmd,
|
|||
|
||||
const uint32_t x1 = fb->tile0.width * tx;
|
||||
const uint32_t y1 = fb->tile0.height * ty;
|
||||
const uint32_t x2 = x1 + fb->tile0.width - 1;
|
||||
const uint32_t y2 = y1 + fb->tile0.height - 1;
|
||||
const uint32_t x2 = MIN2(x1 + fb->tile0.width - 1, MAX_VIEWPORT_SIZE - 1);
|
||||
const uint32_t y2 = MIN2(y1 + fb->tile0.height - 1, MAX_VIEWPORT_SIZE - 1);
|
||||
tu6_emit_window_scissor(cs, x1, y1, x2, y2);
|
||||
tu6_emit_window_offset(cs, x1, y1);
|
||||
|
||||
|
|
|
@ -922,7 +922,7 @@ tu_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
|
|||
.maxSamplerLodBias = 4095.0 / 256.0, /* [-16, 15.99609375] */
|
||||
.maxSamplerAnisotropy = 16,
|
||||
.maxViewports = MAX_VIEWPORTS,
|
||||
.maxViewportDimensions = { (1 << 14), (1 << 14) },
|
||||
.maxViewportDimensions = { MAX_VIEWPORT_SIZE, MAX_VIEWPORT_SIZE },
|
||||
.viewportBoundsRange = { INT16_MIN, INT16_MAX },
|
||||
.viewportSubPixelBits = 8,
|
||||
.minMemoryMapAlignment = 4096, /* A page */
|
||||
|
|
|
@ -100,6 +100,7 @@ typedef uint32_t xcb_window_t;
|
|||
#define MAX_RTS 8
|
||||
#define MAX_VSC_PIPES 32
|
||||
#define MAX_VIEWPORTS 16
|
||||
#define MAX_VIEWPORT_SIZE (1 << 14)
|
||||
#define MAX_SCISSORS 16
|
||||
#define MAX_DISCARD_RECTANGLES 4
|
||||
#define MAX_PUSH_CONSTANTS_SIZE 128
|
||||
|
|
Loading…
Reference in New Issue