Lines Matching refs:rsc

84                               struct etna_resource *rsc)
91 assert(!rsc->ts_bo);
97 ts_compress_fmt = (screen->specs.v4_compression || rsc->base.nr_samples > 1) ?
98 translate_ts_format(rsc->base.format) : -1;
105 (rsc->layout != ETNA_LAYOUT_LINEAR ||
106 rsc->levels[0].stride % 256 == 0) )
109 ts_layer_stride = align(DIV_ROUND_UP(rsc->levels[0].layer_stride,
113 rt_ts_size = ts_layer_stride * rsc->base.array_size;
118 rsc, rt_ts_size);
128 rsc->ts_bo = rt_ts;
129 rsc->levels[0].ts_offset = 0;
130 rsc->levels[0].ts_layer_stride = ts_layer_stride;
131 rsc->levels[0].ts_size = rt_ts_size;
132 rsc->levels[0].ts_mode = ts_mode;
133 rsc->levels[0].ts_compress_fmt = ts_compress_fmt;
157 setup_miptree(struct etna_resource *rsc, unsigned paddingX, unsigned paddingY,
160 struct pipe_resource *prsc = &rsc->base;
167 struct etna_resource_level *mip = &rsc->levels[level];
205 struct etna_resource *rsc;
254 rsc = CALLOC_STRUCT(etna_resource);
255 if (!rsc)
258 rsc->base = *templat;
259 rsc->base.screen = pscreen;
260 rsc->base.nr_samples = nr_samples;
261 rsc->layout = layout;
262 rsc->halign = halign;
263 rsc->explicit_flush = true;
265 pipe_reference_init(&rsc->base.reference, 1);
266 util_range_init(&rsc->valid_buffer_range);
268 size = setup_miptree(rsc, paddingX, paddingY, msaa_xscale, msaa_yscale);
277 rsc->scanout = renderonly_scanout_for_resource(&scanout_templat,
279 if (!rsc->scanout) {
285 rsc->levels[0].stride = handle.stride;
286 rsc->bo = etna_screen_bo_from_handle(pscreen, &handle);
288 if (unlikely(!rsc->bo))
296 rsc->bo = etna_bo_new(screen->dev, size, flags);
297 if (unlikely(!rsc->bo)) {
304 void *map = etna_bo_map(rsc->bo);
305 etna_bo_cpu_prep(rsc->bo, DRM_ETNA_PREP_WRITE);
307 etna_bo_cpu_fini(rsc->bo);
310 return &rsc->base;
313 FREE(rsc);
441 struct etna_resource *rsc = etna_resource(prsc);
443 if (rsc->bo)
444 etna_bo_del(rsc->bo);
446 if (rsc->ts_bo)
447 etna_bo_del(rsc->ts_bo);
449 if (rsc->scanout)
450 renderonly_scanout_destroy(rsc->scanout, etna_screen(pscreen)->ro);
452 util_range_destroy(&rsc->valid_buffer_range);
454 pipe_resource_reference(&rsc->texture, NULL);
455 pipe_resource_reference(&rsc->render, NULL);
458 FREE(rsc->levels[i].patch_offsets);
460 FREE(rsc);
469 struct etna_resource *rsc;
479 rsc = CALLOC_STRUCT(etna_resource);
480 if (!rsc)
483 level = &rsc->levels[0];
484 prsc = &rsc->base;
489 util_range_init(&rsc->valid_buffer_range);
492 rsc->bo = etna_screen_bo_from_handle(pscreen, handle);
493 if (!rsc->bo)
496 rsc->seqno = 1;
497 rsc->layout = modifier_to_layout(handle->modifier);
498 rsc->halign = TEXTURE_HALIGN_FOUR;
501 rsc->explicit_flush = true;
511 etna_layout_multiple(rsc->layout, screen->specs.pixel_pipes,
513 &paddingX, &paddingY, &rsc->halign);
515 if (!screen->specs.use_blt && rsc->layout == ETNA_LAYOUT_LINEAR)
533 if (etna_bo_size(rsc->bo) < level->stride * level->padded_height) {
535 etna_bo_size(rsc->bo), level->stride * level->padded_height,
565 struct etna_resource *rsc = etna_resource(prsc);
576 rsc = etna_resource(cur);
580 scanout = rsc->scanout;
582 handle->stride = rsc->levels[0].stride;
583 handle->offset = rsc->levels[0].offset;
584 handle->modifier = layout_to_modifier(rsc->layout);
587 rsc->explicit_flush = false;
590 return etna_bo_get_name(rsc->bo, &handle->handle) == 0;
595 handle->handle = etna_bo_handle(rsc->bo);
599 handle->handle = etna_bo_dmabuf(rsc->bo);
628 struct etna_resource *rsc = etna_resource(cur);
632 *value = rsc->levels[level].stride;
635 *value = rsc->levels[level].offset;
638 *value = layout_to_modifier(rsc->layout);
649 struct etna_resource *rsc;
656 rsc = etna_resource(prsc);
657 hash = _mesa_hash_pointer(rsc);
659 hash, rsc);
666 _mesa_hash_table_insert_pre_hashed(ctx->pending_resources, hash, rsc,
683 etna_resource_has_valid_ts(struct etna_resource *rsc)
685 if (!rsc->ts_bo)
688 for (int level = 0; level <= rsc->base.last_level; level++)
689 if (rsc->levels[level].ts_valid)