lavapipe: apply VK_WHOLE_SIZE to bufferviews at creation
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Mon, 25 Jul 2022 16:20:21 +0000 (12:20 -0400)
committerMarge Bot <emma+marge@anholt.net>
Fri, 26 Aug 2022 16:02:03 +0000 (16:02 +0000)
Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17740>

src/gallium/frontends/lavapipe/lvp_execute.c
src/gallium/frontends/lavapipe/lvp_image.c

index 6fbd28e..ea68956 100644 (file)
@@ -1169,7 +1169,7 @@ static void fill_sampler_buffer_view_stage(struct rendering_state *state,
       templ.swizzle_a = PIPE_SWIZZLE_W;
       templ.format = bv->pformat;
       templ.u.buf.offset = bv->offset;
-      templ.u.buf.size = bv->range == VK_WHOLE_SIZE ? (bv->buffer->size - bv->offset) : bv->range;
+      templ.u.buf.size = bv->range;
       templ.texture = bv->buffer->bo;
       templ.context = state->pctx;
       state->sv[p_stage][sv_idx] = state->pctx->create_sampler_view(state->pctx, bv->buffer->bo, &templ);
@@ -1243,7 +1243,7 @@ static void fill_image_buffer_view_stage(struct rendering_state *state,
       state->iv[p_stage][idx].resource = bv->buffer->bo;
       state->iv[p_stage][idx].format = bv->pformat;
       state->iv[p_stage][idx].u.buf.offset = bv->offset;
-      state->iv[p_stage][idx].u.buf.size = bv->range == VK_WHOLE_SIZE ? (bv->buffer->size - bv->offset): bv->range;
+      state->iv[p_stage][idx].u.buf.size = bv->range;
    } else {
       state->iv[p_stage][idx].resource = NULL;
       state->iv[p_stage][idx].format = PIPE_FORMAT_NONE;
index 5ba6083..2fe1329 100644 (file)
@@ -384,7 +384,10 @@ lvp_CreateBufferView(VkDevice _device,
    view->format = pCreateInfo->format;
    view->pformat = lvp_vk_format_to_pipe_format(pCreateInfo->format);
    view->offset = pCreateInfo->offset;
-   view->range = pCreateInfo->range;
+   if (pCreateInfo->range == VK_WHOLE_SIZE)
+      view->range = view->buffer->size - view->offset;
+   else
+      view->range = pCreateInfo->range;
    *pView = lvp_buffer_view_to_handle(view);
 
    return VK_SUCCESS;