Lines Matching refs:transfer

263  * transfer
268 struct pipe_transfer *transfer,
294 struct agx_transfer *transfer = CALLOC_STRUCT(agx_transfer);
295 transfer->base.level = level;
296 transfer->base.usage = usage;
297 transfer->base.box = *box;
299 pipe_resource_reference(&transfer->base.resource, resource);
300 *out_transfer = &transfer->base;
303 transfer->base.stride = box->width * blocksize;
304 transfer->base.layer_stride = transfer->base.stride * box->height;
305 transfer->map = calloc(transfer->base.layer_stride, box->depth);
310 uint8_t *dst = (uint8_t *) transfer->map +
311 transfer->base.layer_stride * z;
315 transfer->base.stride / blocksize,
321 return transfer->map;
325 transfer->base.stride = rsrc->slices[level].line_stride;
326 transfer->base.layer_stride = rsrc->array_stride;
334 + transfer->base.box.y * rsrc->slices[level].line_stride
335 + transfer->base.box.x * blocksize;
341 struct pipe_transfer *transfer)
345 struct agx_transfer *trans = agx_transfer(transfer);
346 struct pipe_resource *prsrc = transfer->resource;
350 if (transfer->usage & PIPE_MAP_WRITE)
351 BITSET_SET(rsrc->data_valid, transfer->level);
354 if ((transfer->usage & PIPE_MAP_WRITE) &&
358 for (unsigned z = 0; z < transfer->box.depth; ++z) {
359 uint8_t *map = agx_map_texture_cpu(rsrc, transfer->level,
360 transfer->box.z + z);
362 transfer->layer_stride * z;
365 u_minify(transfer->resource->width0, transfer->level),
367 transfer->stride / blocksize,
368 transfer->box.x, transfer->box.y,
369 transfer->box.x + transfer->box.width,
370 transfer->box.y + transfer->box.height,
371 agx_select_tile_shift(transfer->resource->width0,
372 transfer->resource->height0,
373 transfer->level, blocksize));
377 /* Free the transfer */
379 pipe_resource_reference(&transfer->resource, NULL);
380 FREE(transfer);