return NULL;
}
-bool
-zink_use_dummy_attachments(const struct zink_context *ctx)
-{
- return ctx->disable_fs && !zink_screen(ctx->base.screen)->info.have_EXT_color_write_enable;
-}
-
struct zink_framebuffer *
zink_get_framebuffer(struct zink_context *ctx)
{
unsigned num_resolves = 0;
for (int i = 0; i < ctx->fb_state.nr_cbufs; i++) {
struct pipe_surface *psurf = ctx->fb_state.cbufs[i];
- if (!psurf || zink_use_dummy_attachments(ctx)) {
+ if (!psurf) {
psurf = zink_get_dummy_pipe_surface(ctx, util_logbase2_ceil(ctx->gfx_pipeline_state.rast_samples+1));
}
struct zink_surface *surface = zink_csurface(psurf);
{
const struct pipe_framebuffer_state *fb = &ctx->fb_state;
struct pipe_surface *psurf = fb->cbufs[i];
- if (psurf && !zink_use_dummy_attachments(ctx)) {
+ if (psurf) {
struct zink_surface *surf = zink_csurface(psurf);
struct zink_surface *transient = zink_transient_surface(psurf);
rt->format = surf->info.format[0];
{
const struct pipe_framebuffer_state *fb = &ctx->fb_state;
struct pipe_surface *psurf = fb->cbufs[i];
- if (psurf && !zink_use_dummy_attachments(ctx)) {
+ if (psurf) {
struct zink_surface *surf = zink_csurface(psurf);
struct zink_surface *transient = zink_transient_surface(psurf);
rt->format = surf->info.format[0];
else
zink_init_color_attachment(ctx, i, &state.rts[i]);
struct pipe_surface *surf = fb->cbufs[i];
- if (surf && !zink_use_dummy_attachments(ctx)) {
+ if (surf) {
clears |= !!state.rts[i].clear_color ? PIPE_CLEAR_COLOR0 << i : 0;
struct zink_surface *transient = zink_transient_surface(surf);
if (transient) {
state.num_rts++;
}
state.have_zsbuf = have_zsbuf;
- if (zink_use_dummy_attachments(ctx))
- assert(clears == (ctx->rp_clears_enabled & PIPE_CLEAR_DEPTHSTENCIL));
- else
- assert(clears == ctx->rp_clears_enabled);
+ assert(clears == ctx->rp_clears_enabled);
state.clears = clears;
uint32_t hash = hash_render_pass_state(&state);
struct hash_entry *entry = _mesa_hash_table_search_pre_hashed(ctx->render_pass_cache, hash,
uint32_t clear_validate = 0;
for (int i = 0; i < fb_state->nr_cbufs; i++) {
/* these are no-ops */
- if (!fb_state->cbufs[i] || !zink_fb_clear_enabled(ctx, i) || zink_use_dummy_attachments(ctx))
+ if (!fb_state->cbufs[i] || !zink_fb_clear_enabled(ctx, i))
continue;
/* these need actual clear calls inside the rp */
struct zink_framebuffer_clear_data *clear = zink_fb_clear_element(&ctx->fb_clears[i], 0);
for (int i = 0; i < ctx->fb_state.nr_cbufs; i++) {
if (ctx->fb_state.cbufs[i]) {
struct zink_surface *surf = zink_csurface(ctx->fb_state.cbufs[i]);
- if (zink_use_dummy_attachments(ctx)) {
- surf = zink_get_dummy_surface(ctx, util_logbase2_ceil(ctx->fb_state.samples));
- assert(zink_resource(surf->base.texture)->obj->vkusage == ctx->framebuffer->state.infos[i].usage);
- } else {
- struct zink_surface *transient = zink_transient_surface(ctx->fb_state.cbufs[i]);
- if (surf->base.format == ctx->fb_state.cbufs[i]->format) {
- if (transient) {
- num_cresolves++;
- assert(zink_resource(transient->base.texture)->obj->vkusage == ctx->framebuffer->state.infos[i].usage);
- assert(zink_resource(surf->base.texture)->obj->vkusage == ctx->framebuffer->state.infos[cresolve_offset].usage);
- } else {
- assert(zink_resource(surf->base.texture)->obj->vkusage == ctx->framebuffer->state.infos[i].usage);
- }
+ struct zink_surface *transient = zink_transient_surface(ctx->fb_state.cbufs[i]);
+ if (surf->base.format == ctx->fb_state.cbufs[i]->format) {
+ if (transient) {
+ num_cresolves++;
+ assert(zink_resource(transient->base.texture)->obj->vkusage == ctx->framebuffer->state.infos[i].usage);
+ assert(zink_resource(surf->base.texture)->obj->vkusage == ctx->framebuffer->state.infos[cresolve_offset].usage);
+ } else {
+ assert(zink_resource(surf->base.texture)->obj->vkusage == ctx->framebuffer->state.infos[i].usage);
}
}
}