setup_framebuffer(ctx);
if (ctx->batch.in_rp)
return 0;
- /* TODO: need replicate EXT */
+ /* TODO: use VK_EXT_multisampled_render_to_single_sampled */
if (ctx->framebuffer->rp->state.msaa_expand_mask) {
uint32_t rp_state = ctx->gfx_pipeline_state.rp_state;
struct zink_render_pass *rp = ctx->gfx_pipeline_state.render_pass;
{
if (ctx->batch.in_rp) {
VKCTX(CmdEndRenderPass)(ctx->batch.state->cmdbuf);
+ /* TODO: use VK_EXT_multisampled_render_to_single_sampled */
for (unsigned i = 0; i < ctx->fb_state.nr_cbufs; i++) {
struct zink_ctx_surface *csurf = (struct zink_ctx_surface*)ctx->fb_state.cbufs[i];
if (csurf)
struct zink_ctx_surface *csurf = (struct zink_ctx_surface*)wrap_surface(pctx, psurf);
+ /* TODO: use VK_EXT_multisampled_render_to_single_sampled and skip this entirely */
if (templ->nr_samples) {
/* transient fb attachment: not cached */
struct pipe_resource rtempl = *pres;
struct zink_ctx_surface {
struct pipe_surface base;
struct zink_surface *surf;
- struct zink_ctx_surface *transient; //zink_ctx_surface
- /* TODO: need replicate EXT */
- bool transient_init;
+ /* TODO: use VK_EXT_multisampled_render_to_single_sampled */
+ struct zink_ctx_surface *transient; //for use with EXT_multisample_render_to_texture
+ bool transient_init; //whether the transient surface has data
};
/* use this cast for framebuffer surfaces */