Lines Matching defs:lpr
74 struct llvmpipe_resource *lpr,
77 struct pipe_resource *pt = &lpr->base;
116 if (llvmpipe_resource_is_1d(&lpr->base))
129 lpr->row_stride[level] = nblocksx * block_size;
131 lpr->row_stride[level] = align(nblocksx * block_size, util_get_cpu_caps()->cacheline);
133 lpr->img_stride[level] = (uint64_t)lpr->row_stride[level] * nblocksy;
136 if (lpr->base.target == PIPE_TEXTURE_CUBE) {
140 if (lpr->base.target == PIPE_TEXTURE_3D)
142 else if (lpr->base.target == PIPE_TEXTURE_1D_ARRAY ||
143 lpr->base.target == PIPE_TEXTURE_2D_ARRAY ||
144 lpr->base.target == PIPE_TEXTURE_CUBE ||
145 lpr->base.target == PIPE_TEXTURE_CUBE_ARRAY)
150 mipsize = lpr->img_stride[level] * num_slices;
151 lpr->mip_offsets[level] = total_size;
161 lpr->sample_stride = total_size;
164 lpr->size_required = total_size;
169 lpr->tex_data = align_malloc(total_size, mip_align);
170 if (!lpr->tex_data) {
174 memset(lpr->tex_data, 0, total_size);
193 struct llvmpipe_resource lpr;
194 memset(&lpr, 0, sizeof(lpr));
195 lpr.base = *res;
196 if (!llvmpipe_texture_layout(llvmpipe_screen(screen), &lpr, false))
199 return lpr.size_required <= LP_MAX_TEXTURE_SIZE;
205 struct llvmpipe_resource *lpr,
213 const unsigned width = MAX2(1, align(lpr->base.width0, TILE_SIZE));
214 const unsigned height = MAX2(1, align(lpr->base.height0, TILE_SIZE));
216 lpr->dt = winsys->displaytarget_create(winsys,
217 lpr->base.bind,
218 lpr->base.format,
222 &lpr->row_stride[0] );
224 return lpr->dt != NULL;
234 struct llvmpipe_resource *lpr = CALLOC_STRUCT(llvmpipe_resource);
235 if (!lpr)
238 lpr->base = *templat;
239 lpr->screen = screen;
240 pipe_reference_init(&lpr->base.reference, 1);
241 lpr->base.screen = &screen->base;
243 /* assert(lpr->base.bind); */
245 if (llvmpipe_resource_is_texture(&lpr->base)) {
246 if (lpr->base.bind & (PIPE_BIND_DISPLAY_TARGET |
250 if (!llvmpipe_displaytarget_layout(screen, lpr, map_front_private))
255 if (!llvmpipe_texture_layout(screen, lpr, alloc_backing))
276 lpr->row_stride[0] = bytes;
278 lpr->size_required = bytes;
280 lpr->size_required += (LP_RASTER_BLOCK_SIZE - 1) * 4 * sizeof(float);
283 lpr->data = align_malloc(lpr->size_required, 64);
285 if (!lpr->data)
287 memset(lpr->data, 0, bytes);
291 lpr->id = id_counter++;
295 list_addtail(&lpr->list, &resource_list.list);
299 return &lpr->base;
302 FREE(lpr);
327 struct llvmpipe_resource *lpr;
331 lpr = llvmpipe_resource(pt);
332 lpr->backable = true;
333 *size_required = lpr->size_required;
377 struct llvmpipe_resource *lpr = CALLOC_STRUCT(llvmpipe_resource);
378 lpr->base = *templat;
380 lpr->screen = screen;
381 pipe_reference_init(&lpr->base.reference, 1);
382 lpr->base.screen = &screen->base;
384 if (llvmpipe_resource_is_texture(&lpr->base)) {
386 if (!llvmpipe_texture_layout(screen, lpr, false))
388 if(lpmo->size < lpr->size_required)
390 lpr->tex_data = lpmo->data;
409 lpr->row_stride[0] = bytes;
411 lpr->size_required = bytes;
413 lpr->size_required += (LP_RASTER_BLOCK_SIZE - 1) * 4 * sizeof(float);
415 if(lpmo->size < lpr->size_required)
417 lpr->data = lpmo->data;
419 lpr->id = id_counter++;
420 lpr->imported_memory = true;
424 list_addtail(&lpr->list, &resource_list.list);
428 return &lpr->base;
431 free(lpr);
440 struct llvmpipe_resource *lpr = llvmpipe_resource(pt);
442 if (!lpr->backable && !lpr->user_ptr) {
443 if (lpr->dt) {
446 winsys->displaytarget_destroy(winsys, lpr->dt);
450 if (lpr->tex_data) {
451 if (!lpr->imported_memory)
452 align_free(lpr->tex_data);
453 lpr->tex_data = NULL;
456 else if (lpr->data) {
457 if (!lpr->imported_memory)
458 align_free(lpr->data);
463 if (!list_is_empty(&lpr->list))
464 list_del(&lpr->list);
468 FREE(lpr);
481 struct llvmpipe_resource *lpr = llvmpipe_resource(resource);
491 if (lpr->dt) {
493 struct llvmpipe_screen *screen = lpr->screen;
508 map = winsys->displaytarget_map(winsys, lpr->dt, dt_usage);
511 lpr->tex_data = map;
517 map = llvmpipe_get_texture_image_address(lpr, layer, level);
521 return lpr->data;
534 struct llvmpipe_resource *lpr = llvmpipe_resource(resource);
536 if (lpr->dt) {
538 struct llvmpipe_screen *lp_screen = lpr->screen;
544 winsys->displaytarget_unmap(winsys, lpr->dt);
552 struct llvmpipe_resource *lpr = llvmpipe_resource(resource);
556 return lpr->data;
568 struct llvmpipe_resource *lpr;
572 lpr = CALLOC_STRUCT(llvmpipe_resource);
573 if (!lpr) {
577 lpr->base = *template;
578 lpr->screen = screen;
579 pipe_reference_init(&lpr->base.reference, 1);
580 lpr->base.screen = _screen;
587 assert(lpr->base.width0 == width);
588 assert(lpr->base.height0 == height);
591 lpr->dt = winsys->displaytarget_from_handle(winsys,
594 &lpr->row_stride[0]);
595 if (!lpr->dt) {
599 lpr->id = id_counter++;
603 list_addtail(&lpr->list, &resource_list.list);
607 return &lpr->base;
610 FREE(lpr);
624 struct llvmpipe_resource *lpr = llvmpipe_resource(pt);
626 assert(lpr->dt);
627 if (!lpr->dt)
630 return winsys->displaytarget_get_handle(winsys, lpr->dt, whandle);
639 struct llvmpipe_resource *lpr;
641 lpr = CALLOC_STRUCT(llvmpipe_resource);
642 if (!lpr) {
646 lpr->base = *resource;
647 lpr->screen = screen;
648 pipe_reference_init(&lpr->base.reference, 1);
649 lpr->base.screen = _screen;
651 if (llvmpipe_resource_is_texture(&lpr->base)) {
652 if (!llvmpipe_texture_layout(screen, lpr, false))
655 lpr->tex_data = user_memory;
657 lpr->data = user_memory;
658 lpr->user_ptr = true;
661 list_addtail(&lpr->list, &resource_list.list);
664 return &lpr->base;
666 FREE(lpr);
681 struct llvmpipe_resource *lpr = llvmpipe_resource(resource);
733 pt->stride = lpr->row_stride[level];
734 pt->layer_stride = lpr->img_stride[level];
758 printf("transfer map tex %u mode %s\n", lpr->id, mode);
761 format = lpr->base.format;
782 map += sample * lpr->sample_stride;
901 tex_image_face_size(const struct llvmpipe_resource *lpr, unsigned level)
903 return lpr->img_stride[level];
912 llvmpipe_get_texture_image_address(struct llvmpipe_resource *lpr,
917 assert(llvmpipe_resource_is_texture(&lpr->base));
919 offset = lpr->mip_offsets[level];
922 offset += face_slice * tex_image_face_size(lpr, level);
924 return (ubyte *) lpr->tex_data + offset;
934 const struct llvmpipe_resource *lpr = llvmpipe_resource_const(resource);
939 size = lpr->total_alloc_size;
999 struct llvmpipe_resource *lpr = llvmpipe_resource(pt);
1001 if (!lpr->backable)
1004 if (llvmpipe_resource_is_texture(&lpr->base)) {
1005 if (lpr->size_required > LP_MAX_TEXTURE_SIZE)
1008 lpr->tex_data = (char *)pmem + offset;
1010 lpr->data = (char *)pmem + offset;
1011 lpr->backing_offset = offset;
1031 struct llvmpipe_resource *lpr;
1036 LIST_FOR_EACH_ENTRY(lpr, &resource_list.list, list) {
1037 unsigned size = llvmpipe_resource_size(&lpr->base);
1039 lpr->id, (void *) lpr,
1040 lpr->base.width0, lpr->base.height0, lpr->base.depth0,
1041 size, lpr->base.reference.count);
1056 struct llvmpipe_resource *lpr = llvmpipe_resource(resource);
1058 *stride = lpr->row_stride[0];
1073 struct llvmpipe_resource *lpr = llvmpipe_resource(resource);
1081 *value = lpr->row_stride[level];
1084 *value = lpr->mip_offsets[level] + (lpr->img_stride[level] * layer);
1087 *value = lpr->img_stride[level];
1097 if (!lpr->dt)