Lines Matching refs:res

84    struct lima_resource *res = lima_resource(pres);
85 res->scanout = scanout;
91 setup_miptree(struct lima_resource *res,
95 struct pipe_resource *pres = &res->base;
122 res->levels[level].width = aligned_width;
123 res->levels[level].stride = stride;
124 res->levels[level].offset = size;
125 res->levels[level].layer_stride = util_format_get_stride(pres->format, align(width, 16)) * align(height, 16);
128 res->levels[level].layer_stride /= 4;
138 res->mrt_pitch = size;
152 struct lima_resource *res;
155 res = CALLOC_STRUCT(lima_resource);
156 if (!res)
159 res->base = *templat;
160 res->base.screen = pscreen;
161 pipe_reference_init(&res->base.reference, 1);
163 pres = &res->base;
165 uint32_t size = setup_miptree(res, width, height, align_to_tile);
168 res->bo = lima_bo_create(screen, size, 0);
169 if (!res->bo) {
170 FREE(res);
227 struct lima_resource *res = lima_resource(pres);
228 res->tiled = should_tile;
231 res->index_cache = CALLOC_STRUCT(panfrost_minmax_cache);
273 struct lima_resource *res = lima_resource(pres);
275 if (res->bo)
276 lima_bo_unreference(res->bo);
278 if (res->scanout)
279 renderonly_scanout_destroy(res->scanout, screen->ro);
281 if (res->damage.region)
282 FREE(res->damage.region);
284 if (res->index_cache)
285 FREE(res->index_cache);
287 FREE(res);
308 struct lima_resource *res = CALLOC_STRUCT(lima_resource);
309 if (!res)
312 struct pipe_resource *pres = &res->base;
316 res->levels[0].offset = handle->offset;
317 res->levels[0].stride = handle->stride;
320 res->bo = lima_bo_import(screen, handle);
321 if (!res->bo) {
322 FREE(res);
326 res->modifier_constant = true;
330 res->tiled = false;
333 res->tiled = true;
339 res->tiled = false;
348 if (res->tiled ||
357 if (res->tiled && res->levels[0].stride != stride) {
359 res->levels[0].stride, stride);
363 if (!res->tiled && (res->levels[0].stride % 8)) {
365 res->levels[0].stride);
368 if (!res->tiled && res->levels[0].stride < stride) {
370 res->levels[0].stride, stride);
374 if ((res->bo->size - res->levels[0].offset) < size) {
376 (res->bo->size - res->levels[0].offset), size);
380 res->levels[0].width = width;
383 res->levels[0].width = pres->width0;
390 res->scanout =
411 struct lima_resource *res = lima_resource(pres);
413 if (res->tiled)
418 res->modifier_constant = true;
421 return renderonly_get_handle(res->scanout, handle);
423 if (!lima_bo_export(res->bo, handle))
426 handle->offset = res->levels[0].offset;
427 handle->stride = res->levels[0].stride;
439 struct lima_resource *res = lima_resource(pres);
443 *value = res->levels[level].stride;
446 *value = res->levels[level].offset;
449 if (res->tiled)
496 struct lima_resource *res = lima_resource(pres);
497 struct lima_damage_region *damage = &res->damage;
607 struct lima_resource *res = lima_resource(pres);
608 struct lima_bo *bo = res->bo;
615 if (res->tiled && (usage & PIPE_MAP_DIRECTLY))
622 assert(res->bo && res->bo->size);
624 new_bo = lima_bo_create(screen, res->bo->size, res->bo->flags);
628 lima_bo_unreference(res->bo);
629 res->bo = new_bo;
634 bo = res->bo;
663 if (res->tiled) {
670 unsigned line_stride = res->levels[level].stride;
678 bo->map + res->levels[level].offset + (i + box->z) * res->levels[level].layer_stride,
690 if ((usage & dpw) == dpw && res->index_cache)
693 ptrans->stride = res->levels[level].stride;
694 ptrans->layer_stride = res->levels[level].layer_stride;
697 panfrost_minmax_cache_invalidate(res->index_cache, ptrans);
699 return bo->map + res->levels[level].offset +
700 box->z * res->levels[level].layer_stride +
708 lima_should_convert_linear(struct lima_resource *res,
711 if (res->modifier_constant)
722 unsigned depth = res->base.target == PIPE_TEXTURE_3D ?
723 res->base.depth0 : res->base.array_size;
725 res->base.last_level == 0 &&
726 ptrans->box.width == res->base.width0 &&
727 ptrans->box.height == res->base.height0 &&
734 ++res->full_updates;
736 return res->full_updates >= LAYOUT_CONVERT_THRESHOLD;
745 struct lima_resource *res = lima_resource(ptrans->resource);
747 struct lima_bo *bo = res->bo;
751 pres = &res->base;
754 if (lima_should_convert_linear(res, ptrans)) {
758 util_copy_rect(bo->map + res->levels[0].offset +
759 (i + trans->base.box.z) * res->levels[0].stride,
760 res->base.format,
761 res->levels[0].stride,
769 res->tiled = false;
770 res->modifier_constant = true;
774 unsigned line_stride = res->levels[ptrans->level].stride;
780 bo->map + res->levels[trans->base.level].offset + (i + trans->base.box.z) * res->levels[trans->base.level].layer_stride,
798 struct lima_resource *res = lima_resource(ptrans->resource);
805 panfrost_minmax_cache_invalidate(res->index_cache, ptrans);
886 struct lima_resource *res = lima_resource(prsc);
888 if (!res->tiled) {
908 lima_flush_job_accessing_bo(ctx, res->bo, true);
909 lima_bo_wait(res->bo, LIMA_GEM_WAIT_WRITE, PIPE_TIMEOUT_INFINITE);
910 if (!lima_bo_map(res->bo))