mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
lavapipe: add some asserts for blit region extents
this enforces spec for 3d vs array texture blits, more to come Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10005>
This commit is contained in:
parent
be477f39aa
commit
35c02f79c9
1 changed files with 20 additions and 0 deletions
|
|
@ -133,6 +133,24 @@ struct rendering_state {
|
||||||
uint32_t so_offsets[PIPE_MAX_SO_BUFFERS];
|
uint32_t so_offsets[PIPE_MAX_SO_BUFFERS];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ALWAYS_INLINE static void
|
||||||
|
assert_subresource_layers(const struct pipe_resource *pres, const VkImageSubresourceLayers *layers, const VkOffset3D *offsets)
|
||||||
|
{
|
||||||
|
#ifndef NDEBUG
|
||||||
|
if (pres->target == PIPE_TEXTURE_3D) {
|
||||||
|
assert(layers->baseArrayLayer == 0);
|
||||||
|
assert(layers->layerCount == 1);
|
||||||
|
assert(offsets[0].z <= pres->depth0);
|
||||||
|
assert(offsets[1].z <= pres->depth0);
|
||||||
|
} else {
|
||||||
|
assert(layers->baseArrayLayer < pres->array_size);
|
||||||
|
assert(layers->baseArrayLayer + layers->layerCount <= pres->array_size);
|
||||||
|
assert(offsets[0].z == 0);
|
||||||
|
assert(offsets[1].z == 1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void emit_compute_state(struct rendering_state *state)
|
static void emit_compute_state(struct rendering_state *state)
|
||||||
{
|
{
|
||||||
if (state->iv_dirty[PIPE_SHADER_COMPUTE]) {
|
if (state->iv_dirty[PIPE_SHADER_COMPUTE]) {
|
||||||
|
|
@ -2064,6 +2082,8 @@ static void handle_blit_image(struct lvp_cmd_buffer_entry *cmd,
|
||||||
info.src.box.height = srcY0 - srcY1;
|
info.src.box.height = srcY0 - srcY1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert_subresource_layers(info.src.resource, &blitcmd->regions[i].srcSubresource, blitcmd->regions[i].srcOffsets);
|
||||||
|
assert_subresource_layers(info.dst.resource, &blitcmd->regions[i].dstSubresource, blitcmd->regions[i].dstOffsets);
|
||||||
if (blitcmd->src->bo->target == PIPE_TEXTURE_3D) {
|
if (blitcmd->src->bo->target == PIPE_TEXTURE_3D) {
|
||||||
if (dstZ0 < dstZ1) {
|
if (dstZ0 < dstZ1) {
|
||||||
info.dst.box.z = dstZ0;
|
info.dst.box.z = dstZ0;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue