ctx->instance_count,
&vertex_postfix, &tiler_postfix,
&primitive_size);
- panfrost_emit_shader_meta(batch, PIPE_SHADER_VERTEX, &vertex_postfix);
- panfrost_emit_shader_meta(batch, PIPE_SHADER_FRAGMENT, &tiler_postfix);
- panfrost_emit_sampler_descriptors(batch, PIPE_SHADER_VERTEX, &vertex_postfix);
- panfrost_emit_sampler_descriptors(batch, PIPE_SHADER_FRAGMENT, &tiler_postfix);
- panfrost_emit_texture_descriptors(batch, PIPE_SHADER_VERTEX, &vertex_postfix);
- panfrost_emit_texture_descriptors(batch, PIPE_SHADER_FRAGMENT, &tiler_postfix);
+ vertex_postfix.sampler_descriptor = panfrost_emit_sampler_descriptors(batch, PIPE_SHADER_VERTEX);
+ tiler_postfix.sampler_descriptor = panfrost_emit_sampler_descriptors(batch, PIPE_SHADER_FRAGMENT);
+ vertex_postfix.textures = panfrost_emit_texture_descriptors(batch, PIPE_SHADER_VERTEX);
+ tiler_postfix.textures = panfrost_emit_texture_descriptors(batch, PIPE_SHADER_FRAGMENT);
panfrost_emit_const_buf(batch, PIPE_SHADER_VERTEX, &vertex_postfix);
panfrost_emit_const_buf(batch, PIPE_SHADER_FRAGMENT, &tiler_postfix);
- panfrost_emit_viewport(batch, &tiler_postfix);
+ tiler_postfix.viewport = panfrost_emit_viewport(batch);
+
+ vertex_postfix.shader = panfrost_emit_compute_shader_meta(batch, PIPE_SHADER_VERTEX);
+ tiler_postfix.shader = panfrost_emit_frag_shader_meta(batch);
panfrost_vt_update_primitive_size(ctx, &tiler_prefix, &primitive_size);
for (unsigned i = 0; i < cso->variant_count; ++i) {
struct panfrost_shader_state *shader_state = &cso->variants[i];
panfrost_bo_unreference(shader_state->bo);
+
+ if (shader_state->upload.rsrc)
+ pipe_resource_reference(&shader_state->upload.rsrc, NULL);
+
shader_state->bo = NULL;
}
free(cso->variants);
+
free(so);
}
so->base = *zsa;
pan_pipe_to_stencil(&zsa->stencil[0], &so->stencil_front);
- pan_pipe_to_stencil(&zsa->stencil[1], &so->stencil_back);
-
so->stencil_mask_front = zsa->stencil[0].writemask;
- if (zsa->stencil[1].enabled)
+ if (zsa->stencil[1].enabled) {
+ pan_pipe_to_stencil(&zsa->stencil[1], &so->stencil_back);
so->stencil_mask_back = zsa->stencil[1].writemask;
- else
+ } else {
+ so->stencil_back = so->stencil_front;
so->stencil_mask_back = so->stencil_mask_front;
+ }
/* Alpha lowered by frontend */
assert(!zsa->alpha.enabled);