pstate->attachments[i].samples = attachments[i].samples = rt->samples;
attachments[i].loadOp = rt->clear_color ? VK_ATTACHMENT_LOAD_OP_CLEAR :
/* TODO: need replicate EXT */
- //rt->resolve || (state->swapchain_init && rt->swapchain) ?
- state->swapchain_init && rt->swapchain ?
+ //rt->resolve || rt->swapchain ?
+ rt->swapchain ?
VK_ATTACHMENT_LOAD_OP_DONT_CARE :
VK_ATTACHMENT_LOAD_OP_LOAD;
if (idx < rp->state.num_cbufs) {
*pipeline = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
*access |= VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
- if (!rt->clear_color && (!rp->state.swapchain_init || !rt->swapchain))
+ if (!rt->clear_color && !rt->swapchain)
*access |= VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
return rt->fbfetch ? VK_IMAGE_LAYOUT_GENERAL : VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
}
const struct pipe_framebuffer_state *fb = &ctx->fb_state;
struct zink_render_pass_state state = {0};
uint32_t clears = 0;
- state.swapchain_init = ctx->new_swapchain;
state.samples = fb->samples > 0;
u_foreach_bit(i, ctx->fbfetch_outputs)
state.rts[i].samples = MAX3(transient ? transient->base.nr_samples : 0, surf->texture->nr_samples, 1);
state.rts[i].clear_color = zink_fb_clear_enabled(ctx, i) && !zink_fb_clear_first_needs_explicit(&ctx->fb_clears[i]);
clears |= !!state.rts[i].clear_color ? PIPE_CLEAR_COLOR0 << i : 0;
- state.rts[i].swapchain = surf->texture->bind & PIPE_BIND_DISPLAY_TARGET;
+ state.rts[i].swapchain = ctx->new_swapchain && (surf->texture->bind & PIPE_BIND_DISPLAY_TARGET);
if (transient) {
state.num_cresolves++;
state.rts[i].resolve = true;
uint8_t num_cbufs : 5; /* PIPE_MAX_COLOR_BUFS = 8 */
uint8_t have_zsbuf : 1;
uint8_t samples:1; //for fs samplemask
- uint8_t swapchain_init:1;
uint32_t num_zsresolves : 1;
- uint32_t num_cresolves : 23; /* PIPE_MAX_COLOR_BUFS, but this is a struct hole */
+ uint32_t num_cresolves : 24; /* PIPE_MAX_COLOR_BUFS, but this is a struct hole */
struct zink_rt_attrib rts[PIPE_MAX_COLOR_BUFS + 1];
unsigned num_rts;
uint32_t clears; //for extra verification and update flagging