Lines Matching defs:pres
55 panfrost_should_checksum(const struct panfrost_device *dev, const struct panfrost_resource *pres);
277 panfrost_is_2d(const struct panfrost_resource *pres)
279 return (pres->base.target == PIPE_TEXTURE_2D)
280 || (pres->base.target == PIPE_TEXTURE_RECT);
292 const struct panfrost_resource *pres,
306 if (pres->base.bind & ~valid_binding)
314 if (pres->base.usage == PIPE_USAGE_STREAM)
323 if (pres->base.nr_samples > 1)
326 switch (pres->base.target) {
345 if (pres->base.width0 <= 16 && pres->base.height0 <= 16)
360 const struct panfrost_resource *pres)
363 pres->base.width0 >= 128 &&
364 pres->base.height0 >= 128;
369 const struct panfrost_resource *pres,
386 if (MIN2(pres->base.width0, pres->base.height0) < 2)
389 bool can_tile = (pres->base.target != PIPE_BUFFER)
390 && ((pres->base.bind & ~valid_binding) == 0);
392 return can_tile && (pres->base.usage != PIPE_USAGE_STREAM);
397 const struct panfrost_resource *pres,
404 if (panfrost_should_afbc(dev, pres, fmt)) {
409 if (panfrost_afbc_can_ytr(pres->base.format))
412 if (panfrost_should_tile_afbc(dev, pres))
416 } else if (panfrost_should_tile(dev, pres, fmt))
423 panfrost_should_checksum(const struct panfrost_device *dev, const struct panfrost_resource *pres)
431 unsigned bytes_per_pixel = MAX2(pres->base.nr_samples, 1) *
432 util_format_get_blocksize(pres->base.format);
434 return pres->base.bind & PIPE_BIND_RENDER_TARGET &&
435 panfrost_is_2d(pres) &&
437 pres->base.last_level == 0 &&
443 struct panfrost_resource *pres,
447 modifier : panfrost_best_modifier(dev, pres, fmt);
449 panfrost_should_checksum(dev, pres) ?
452 panfrost_translate_texture_dimension(pres->base.target);
456 pres->modifier_constant =
466 pres->image.layout = (struct pan_image_layout) {
470 .width = pres->base.width0,
471 .height = pres->base.height0,
472 .depth = pres->base.depth0,
473 .array_size = pres->base.array_size,
474 .nr_samples = MAX2(pres->base.nr_samples, 1),
475 .nr_slices = pres->base.last_level + 1,
479 ASSERTED bool valid = pan_image_layout_init(&pres->image.layout, NULL);
484 panfrost_resource_init_afbc_headers(struct panfrost_resource *pres)
486 panfrost_bo_mmap(pres->image.data.bo);
488 unsigned nr_samples = MAX2(pres->base.nr_samples, 1);
490 for (unsigned i = 0; i < pres->base.array_size; ++i) {
491 for (unsigned l = 0; l <= pres->base.last_level; ++l) {
492 struct pan_image_slice_layout *slice = &pres->image.layout.slices[l];
495 void *ptr = pres->image.data.bo->ptr.cpu +
496 (i * pres->image.layout.array_stride) +
517 struct panfrost_resource *pres = pan_resource(res);
518 struct pipe_scissor_state *damage_extent = &pres->damage.extent;
527 if (!pres->damage.tile_map.data) {
528 pres->damage.tile_map.stride =
530 pres->damage.tile_map.size =
531 pres->damage.tile_map.stride *
533 pres->damage.tile_map.data =
534 malloc(pres->damage.tile_map.size);
537 memset(pres->damage.tile_map.data, 0, pres->damage.tile_map.size);
538 pres->damage.tile_map.enable = true;
540 pres->damage.tile_map.enable = false;
562 if (!pres->damage.tile_map.enable)
572 unsigned b = (t_y * pres->damage.tile_map.stride * 8) + t_x;
574 if (BITSET_TEST(pres->damage.tile_map.data, b))
577 BITSET_SET(pres->damage.tile_map.data, b);
590 if (pres->damage.tile_map.enable) {
602 pres->damage.tile_map.enable = false;