void ilo_init_states(struct ilo_context *ilo) { ilo_gpe_set_scissor_null(ilo->dev, &ilo->scissor); ilo_gpe_init_zs_surface(ilo->dev, NULL, PIPE_FORMAT_NONE, 0, 0, 1, false, &ilo->fb.null_zs); ilo->dirty = ILO_DIRTY_ALL; }
void ilo_state_vector_init(const struct ilo_dev_info *dev, struct ilo_state_vector *vec) { ilo_gpe_set_scissor_null(dev, &vec->scissor); ilo_gpe_init_zs_surface(dev, NULL, PIPE_FORMAT_NONE, 0, 0, 1, &vec->fb.null_zs); vec->dirty = ILO_DIRTY_ALL; }
static struct pipe_surface * ilo_create_surface(struct pipe_context *pipe, struct pipe_resource *res, const struct pipe_surface *templ) { const struct ilo_dev_info *dev = ilo_context(pipe)->dev; struct ilo_surface_cso *surf; surf = MALLOC_STRUCT(ilo_surface_cso); assert(surf); surf->base = *templ; pipe_reference_init(&surf->base.reference, 1); surf->base.texture = NULL; pipe_resource_reference(&surf->base.texture, res); surf->base.context = pipe; surf->base.width = u_minify(res->width0, templ->u.tex.level); surf->base.height = u_minify(res->height0, templ->u.tex.level); surf->is_rt = !util_format_is_depth_or_stencil(templ->format); if (surf->is_rt) { /* relax this? */ assert(res->target != PIPE_BUFFER); /* * classic i965 sets render_cache_rw for constant buffers and sol * surfaces but not render buffers. Why? */ ilo_gpe_init_view_surface_for_texture(dev, ilo_texture(res), templ->format, templ->u.tex.level, 1, templ->u.tex.first_layer, templ->u.tex.last_layer - templ->u.tex.first_layer + 1, true, &surf->u.rt); } else { assert(res->target != PIPE_BUFFER); ilo_gpe_init_zs_surface(dev, ilo_texture(res), templ->format, templ->u.tex.level, templ->u.tex.first_layer, templ->u.tex.last_layer - templ->u.tex.first_layer + 1, &surf->u.zs); } return &surf->base; }