Lines Matching refs:rsc

42 v3d_debug_resource_layout(struct v3d_resource *rsc, const char *caller)
47 struct pipe_resource *prsc = &rsc->base;
51 "rsc %s %p (format %s), %dx%d buffer @0x%08x-0x%08x\n",
52 caller, rsc,
55 rsc->bo->offset,
56 rsc->bo->offset + rsc->bo->size - 1);
70 struct v3d_resource_slice *slice = &rsc->slices[i];
72 int level_width = slice->stride / rsc->cpp;
78 "rsc %s %p (format %s), %dx%d: "
80 caller, rsc,
91 rsc->bo->offset + slice->offset);
96 v3d_resource_bo_alloc(struct v3d_resource *rsc)
98 struct pipe_resource *prsc = &rsc->base;
102 bo = v3d_bo_alloc(v3d_screen(pscreen), rsc->size, "resource");
104 v3d_bo_unreference(&rsc->bo);
105 rsc->bo = bo;
106 rsc->serial_id++;
107 v3d_debug_resource_layout(rsc, "alloc");
122 struct v3d_resource *rsc = v3d_resource(ptrans->resource);
123 struct v3d_resource_slice *slice = &rsc->slices[ptrans->level];
127 void *dst = rsc->bo->map +
128 v3d_layer_offset(&rsc->base,
137 slice->tiling, rsc->cpp,
151 struct v3d_resource *rsc)
159 if (psview->texture != &rsc->base)
178 struct v3d_resource *rsc = v3d_resource(prsc);
181 if (v3d_resource_bo_alloc(rsc)) {
198 rebind_sampler_views(v3d, rsc);
224 rsc->writes++;
225 rsc->initialized_buffers = ~0;
237 struct v3d_resource *rsc = v3d_resource(prsc);
257 rsc->bo->private) {
281 buf = v3d_bo_map_unsynchronized(rsc->bo);
283 buf = v3d_bo_map(rsc->bo);
294 struct v3d_resource_slice *slice = &rsc->slices[level];
295 if (rsc->tiled) {
302 ptrans->stride = ptrans->box.width * rsc->cpp;
309 void *src = rsc->bo->map +
310 v3d_layer_offset(&rsc->base,
319 slice->tiling, rsc->cpp,
327 ptrans->layer_stride = rsc->cube_map_stride;
331 ptrans->box.x * rsc->cpp +
332 ptrans->box.z * rsc->cube_map_stride;
351 struct v3d_resource *rsc = v3d_resource(prsc);
352 struct v3d_resource_slice *slice = &rsc->slices[level];
355 if (!rsc->tiled) {
369 buf = v3d_bo_map_unsynchronized(rsc->bo);
371 buf = v3d_bo_map(rsc->bo);
375 v3d_layer_offset(&rsc->base,
381 slice->tiling, rsc->cpp, slice->padded_height,
391 struct v3d_resource *rsc = v3d_resource(prsc);
393 if (rsc->scanout)
394 renderonly_scanout_destroy(rsc->scanout, screen->ro);
396 v3d_bo_unreference(&rsc->bo);
397 free(rsc);
401 v3d_resource_modifier(struct v3d_resource *rsc)
403 if (rsc->tiled) {
407 assert(rsc->slices[0].tiling == V3D_TILING_UIF_XOR ||
408 rsc->slices[0].tiling == V3D_TILING_UIF_NO_XOR);
423 struct v3d_resource *rsc = v3d_resource(prsc);
424 struct v3d_bo *bo = rsc->bo;
426 whandle->stride = rsc->slices[0].stride;
428 whandle->modifier = v3d_resource_modifier(rsc);
441 if (renderonly_get_handle(rsc->scanout, whandle)) {
442 whandle->stride = rsc->slices[0].stride;
464 struct v3d_resource *rsc = v3d_resource(prsc);
468 *value = rsc->slices[level].stride;
474 *value = v3d_resource_modifier(rsc);
494 v3d_get_ub_pad(struct v3d_resource *rsc, uint32_t height)
496 uint32_t utile_h = v3d_utile_height(rsc->cpp);
528 v3d_setup_slices(struct v3d_resource *rsc, uint32_t winsys_stride,
531 struct pipe_resource *prsc = &rsc->base;
544 uint32_t utile_w = v3d_utile_width(rsc->cpp);
545 uint32_t utile_h = v3d_utile_height(rsc->cpp);
564 struct v3d_resource_slice *slice = &rsc->slices[i];
587 if (!rsc->tiled) {
590 level_width = align(level_width, 64 / rsc->cpp);
618 slice->ub_pad = v3d_get_ub_pad(rsc,
641 slice->stride = level_width * rsc->cpp;
662 rsc->size = offset;
672 uint32_t page_align_offset = (align(rsc->slices[0].offset, 4096) -
673 rsc->slices[0].offset);
675 rsc->size += page_align_offset;
677 rsc->slices[i].offset += page_align_offset;
685 rsc->cube_map_stride = align(rsc->slices[0].offset +
686 rsc->slices[0].size, 64);
687 rsc->size += rsc->cube_map_stride * (prsc->array_size - 1);
689 rsc->cube_map_stride = rsc->slices[0].size;
696 struct v3d_resource *rsc = v3d_resource(prsc);
697 struct v3d_resource_slice *slice = &rsc->slices[level];
702 return slice->offset + layer * rsc->cube_map_stride;
710 struct v3d_resource *rsc = CALLOC_STRUCT(v3d_resource);
711 if (!rsc)
713 struct pipe_resource *prsc = &rsc->base;
723 rsc->cpp = util_format_get_blocksize(prsc->format);
725 rsc->cpp *= prsc->nr_samples;
738 rsc->cpp = 4;
741 rsc->cpp = 8;
744 rsc->cpp = 16;
749 rsc->serial_id++;
751 assert(rsc->cpp);
753 return rsc;
765 struct v3d_resource *rsc = v3d_resource_setup(pscreen, tmpl);
766 struct pipe_resource *prsc = &rsc->base;
804 rsc->tiled = should_tile;
808 rsc->tiled = true;
810 rsc->tiled = false;
816 rsc->internal_format = prsc->format;
818 v3d_setup_slices(rsc, 0, tmpl->bind & PIPE_BIND_SHARED);
826 .height0 = align(rsc->size, 4096) / 4096,
831 rsc->scanout =
836 if (!rsc->scanout) {
841 rsc->bo = v3d_bo_open_dmabuf(screen, handle.handle);
844 if (!rsc->bo)
847 v3d_debug_resource_layout(rsc, "renderonly");
851 if (!v3d_resource_bo_alloc(rsc))
876 struct v3d_resource *rsc = v3d_resource_setup(pscreen, tmpl);
877 struct pipe_resource *prsc = &rsc->base;
878 struct v3d_resource_slice *slice = &rsc->slices[0];
880 if (!rsc)
885 rsc->tiled = false;
888 rsc->tiled = true;
891 rsc->tiled = screen->ro == NULL;
896 rsc->tiled = false;
897 rsc->sand_col128_stride =
910 rsc->bo = v3d_bo_open_name(screen, whandle->handle);
913 rsc->bo = v3d_bo_open_dmabuf(screen, whandle->handle);
922 if (!rsc->bo)
925 rsc->internal_format = prsc->format;
927 v3d_setup_slices(rsc, whandle->stride, true);
928 v3d_debug_resource_layout(rsc, "import");
931 if (rsc->tiled) {
937 rsc->slices[0].offset += whandle->offset;
939 if (rsc->slices[0].offset + rsc->slices[0].size >
940 rsc->bo->size) {
944 rsc->slices[0].size,
945 rsc->bo->size);
955 rsc->scanout =
961 if (rsc->tiled && whandle->stride != slice->stride) {
974 } else if (!rsc->tiled) {
1049 struct v3d_resource *rsc = v3d_resource(ptex);
1056 struct v3d_resource_slice *slice = &rsc->slices[level];
1106 (2 * v3d_utile_height(rsc->cpp)));
1109 if (rsc->separate_stencil) {
1111 v3d_create_surface(pctx, &rsc->separate_stencil->base,
1154 struct v3d_resource *rsc = v3d_resource(prsc);
1156 return &rsc->separate_stencil->base;