Lines Matching refs:rsrc
145 struct panfrost_resource *rsrc;
158 rsrc = pan_resource(cur);
159 scanout = rsrc->scanout;
161 handle->modifier = rsrc->image.layout.modifier;
162 rsrc->modifier_constant = true;
167 handle->handle = rsrc->image.data.bo->gem_handle;
169 int fd = panfrost_bo_export(rsrc->image.data.bo);
180 handle->stride = panfrost_get_legacy_stride(&rsrc->image.layout, 0);
181 handle->offset = rsrc->image.layout.slices[0].offset;
192 struct panfrost_resource *rsrc = (struct panfrost_resource *) prsc;
198 *value = panfrost_get_legacy_stride(&rsrc->image.layout, level);
201 *value = rsrc->image.layout.slices[level].offset;
204 *value = rsrc->image.layout.modifier;
771 struct panfrost_resource *rsrc = (struct panfrost_resource *) pt;
773 if (rsrc->scanout)
774 renderonly_scanout_destroy(rsrc->scanout, dev->ro);
776 if (rsrc->image.data.bo)
777 panfrost_bo_unreference(rsrc->image.data.bo);
779 if (rsrc->image.crc.bo)
780 panfrost_bo_unreference(rsrc->image.crc.bo);
782 free(rsrc->index_cache);
783 free(rsrc->damage.tile_map.data);
785 util_range_destroy(&rsrc->valid_buffer_range);
786 free(rsrc);
850 blit.src.resource = trans->staging.rsrc;
851 blit.src.format = pan_blit_format(trans->staging.rsrc->format);
870 blit.dst.resource = trans->staging.rsrc;
871 blit.dst.format = pan_blit_format(trans->staging.rsrc->format);
882 struct panfrost_resource *rsrc)
890 if (!BITSET_TEST(rsrc->valid.data, level))
893 struct panfrost_bo *bo = rsrc->image.data.bo;
894 unsigned stride = panfrost_get_layer_stride(&rsrc->image.layout, level);
902 rsrc->image.layout.slices[level].offset +
908 rsrc->image.layout.slices[level].row_stride,
909 rsrc->image.layout.format);
915 struct panfrost_resource *rsrc)
917 struct panfrost_bo *bo = rsrc->image.data.bo;
920 unsigned stride = panfrost_get_layer_stride(&rsrc->image.layout, level);
928 rsrc->image.layout.slices[level].offset +
934 rsrc->image.layout.slices[level].row_stride,
935 ptrans->stride, rsrc->image.layout.format);
959 struct panfrost_resource *rsrc = pan_resource(resource);
960 enum pipe_format format = rsrc->image.layout.format;
962 struct panfrost_bo *bo = rsrc->image.data.bo;
965 if ((usage & PIPE_MAP_DIRECTLY) && rsrc->image.layout.modifier != DRM_FORMAT_MOD_LINEAR)
977 rsrc->constant_stencil = false;
980 if (drm_is_afbc(rsrc->image.layout.modifier)) {
981 struct panfrost_resource *staging = pan_alloc_staging(ctx, rsrc, level, box);
991 transfer->staging.rsrc = &staging->base;
998 assert(transfer->staging.rsrc != NULL);
1000 bool valid = BITSET_TEST(rsrc->valid.data, level);
1002 if ((usage & PIPE_MAP_READ) && (valid || rsrc->track.nr_writers > 0)) {
1025 !(rsrc->image.data.bo->flags & PAN_BO_SHARED)) {
1037 && !util_ranges_intersect(&rsrc->valid_buffer_range, box->x, box->x + box->width)) &&
1038 rsrc->track.nr_users > 0) {
1045 panfrost_flush_writer(ctx, rsrc, "Shadow resource creation");
1055 if (rsrc->separate_stencil) {
1068 if (rsrc->track.nr_users > 0 ||
1085 memcpy(newbo->ptr.cpu, rsrc->image.data.bo->ptr.cpu, bo->size);
1087 panfrost_resource_swap_bo(ctx, rsrc, newbo);
1090 drm_is_afbc(rsrc->image.layout.modifier))
1091 panfrost_resource_init_afbc_headers(rsrc);
1098 panfrost_flush_batches_accessing_rsrc(ctx, rsrc,
1105 && !util_ranges_intersect(&rsrc->valid_buffer_range, box->x, box->x + box->width)) {
1109 panfrost_flush_batches_accessing_rsrc(ctx, rsrc, "Synchronized write");
1112 panfrost_flush_writer(ctx, rsrc, "Synchronized read");
1125 if (rsrc->image.layout.modifier == DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED) {
1131 panfrost_load_tiled_images(transfer, rsrc);
1135 assert (rsrc->image.layout.modifier == DRM_FORMAT_MOD_LINEAR);
1143 if ((usage & dpw) == dpw && rsrc->index_cache)
1146 transfer->base.stride = rsrc->image.layout.slices[level].row_stride;
1148 panfrost_get_layer_stride(&rsrc->image.layout, level);
1154 BITSET_SET(rsrc->valid.data, level);
1155 panfrost_minmax_cache_invalidate(rsrc->index_cache, &transfer->base);
1159 + rsrc->image.layout.slices[level].offset
1161 + box_blocks.y * rsrc->image.layout.slices[level].row_stride
1168 struct panfrost_resource *rsrc,
1171 assert(!rsrc->modifier_constant);
1177 ctx->base.screen, &rsrc->base, modifier);
1181 unsigned depth = rsrc->base.target == PIPE_TEXTURE_3D ?
1182 rsrc->base.depth0 : rsrc->base.array_size;
1185 { 0, 0, 0, rsrc->base.width0, rsrc->base.height0, depth };
1191 .src.resource = &rsrc->base,
1192 .src.format = pan_blit_format(rsrc->base.format),
1198 for (int i = 0; i <= rsrc->base.last_level; i++) {
1199 if (BITSET_TEST(rsrc->valid.data, i)) {
1205 panfrost_bo_unreference(rsrc->image.data.bo);
1206 if (rsrc->image.crc.bo)
1207 panfrost_bo_unreference(rsrc->image.crc.bo);
1209 rsrc->image.data.bo = tmp_rsrc->image.data.bo;
1210 panfrost_bo_reference(rsrc->image.data.bo);
1212 panfrost_resource_setup(pan_device(ctx->base.screen), rsrc, modifier,
1223 struct panfrost_resource *rsrc,
1228 if (!drm_is_afbc(rsrc->image.layout.modifier))
1231 if (panfrost_afbc_format(dev->arch, pan_blit_format(rsrc->base.format)) ==
1235 pan_resource_modifier_convert(ctx, rsrc,
1296 if (trans->staging.rsrc) {
1307 prsrc->image.data.bo = pan_resource(trans->staging.rsrc)->image.data.bo;
1312 pan_resource(trans->staging.rsrc),
1317 pipe_resource_reference(&trans->staging.rsrc, NULL);
1391 struct panfrost_resource *rsrc = pan_resource(prsrc);
1393 rsrc->constant_stencil = true;
1408 panfrost_resource_get_internal_format(struct pipe_resource *rsrc)
1410 struct panfrost_resource *prsrc = (struct panfrost_resource *) rsrc;
1424 struct panfrost_resource *rsrc = pan_resource(prsrc);
1430 assert(rsrc->image.data.bo);
1432 BITSET_CLEAR(rsrc->valid.data, l);