From: Mike Blumenkrantz Date: Wed, 16 Sep 2020 18:19:35 +0000 (-0400) Subject: zink: remove 'scissors' member of viewport state X-Git-Tag: upstream/21.2.3~7490 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bc37d882fcde8a0fb7ca94ec076f6680e3d61dda;p=platform%2Fupstream%2Fmesa.git zink: remove 'scissors' member of viewport state this is the vulkan-transformed value, but we can just apply it at draw time and save ourselves some memory Reviewed-by: Dave Airlie Part-of: --- diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 28a98f4..815909d 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -532,16 +532,8 @@ zink_set_scissor_states(struct pipe_context *pctx, { struct zink_context *ctx = zink_context(pctx); - for (unsigned i = 0; i < num_scissors; i++) { - VkRect2D scissor; - - scissor.offset.x = states[i].minx; - scissor.offset.y = states[i].miny; - scissor.extent.width = states[i].maxx - states[i].minx; - scissor.extent.height = states[i].maxy - states[i].miny; + for (unsigned i = 0; i < num_scissors; i++) ctx->vp_state.scissor_states[start_slot + i] = states[i]; - ctx->vp_state.scissors[start_slot + i] = scissor; - } } static void diff --git a/src/gallium/drivers/zink/zink_context.h b/src/gallium/drivers/zink/zink_context.h index 10b95d2..7f7a962 100644 --- a/src/gallium/drivers/zink/zink_context.h +++ b/src/gallium/drivers/zink/zink_context.h @@ -93,7 +93,6 @@ zink_so_target(struct pipe_stream_output_target *so_target) struct zink_viewport_state { struct pipe_viewport_state viewport_states[PIPE_MAX_VIEWPORTS]; struct pipe_scissor_state scissor_states[PIPE_MAX_VIEWPORTS]; - VkRect2D scissors[PIPE_MAX_VIEWPORTS]; uint8_t num_viewports; }; diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index ab15bb9..9c8ffd2 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -761,9 +761,14 @@ zink_draw_vbo(struct pipe_context *pctx, else vkCmdSetViewport(batch->cmdbuf, 0, ctx->vp_state.num_viewports, viewports); VkRect2D scissors[PIPE_MAX_VIEWPORTS] = {}; - if (ctx->rast_state->base.scissor) - memcpy(scissors, ctx->vp_state.scissors, sizeof(scissors)); - else if (ctx->fb_state.width && ctx->fb_state.height) { + if (ctx->rast_state->base.scissor) { + for (unsigned i = 0; i < ctx->vp_state.num_viewports; i++) { + scissors[i].offset.x = ctx->vp_state.scissor_states[i].minx; + scissors[i].offset.y = ctx->vp_state.scissor_states[i].miny; + scissors[i].extent.width = ctx->vp_state.scissor_states[i].maxx - ctx->vp_state.scissor_states[i].minx; + scissors[i].extent.height = ctx->vp_state.scissor_states[i].maxy - ctx->vp_state.scissor_states[i].miny; + } + } else if (ctx->fb_state.width && ctx->fb_state.height) { for (unsigned i = 0; i < ctx->vp_state.num_viewports; i++) { scissors[i].extent.width = ctx->fb_state.width; scissors[i].extent.height = ctx->fb_state.height;