Lines Matching refs:spr
56 struct softpipe_resource *spr, in softpipe_resource_layout() argument
59 struct pipe_resource *pt = &spr->base; in softpipe_resource_layout()
79 spr->stride[level] = util_format_get_stride(pt->format, width); in softpipe_resource_layout()
81 spr->level_offset[level] = buffer_size; in softpipe_resource_layout()
84 if ((uint64_t)spr->stride[level] * nblocksy > SP_MAX_TEXTURE_SIZE) { in softpipe_resource_layout()
89 spr->img_stride[level] = spr->stride[level] * nblocksy; in softpipe_resource_layout()
91 buffer_size += (uint64_t) spr->img_stride[level] * slices; in softpipe_resource_layout()
102 spr->data = align_malloc(buffer_size, 64); in softpipe_resource_layout()
103 return spr->data != NULL; in softpipe_resource_layout()
119 struct softpipe_resource spr; in softpipe_can_create_resource() local
120 memset(&spr, 0, sizeof(spr)); in softpipe_can_create_resource()
121 spr.base = *res; in softpipe_can_create_resource()
122 return softpipe_resource_layout(screen, &spr, FALSE); in softpipe_can_create_resource()
131 struct softpipe_resource *spr, in softpipe_displaytarget_layout() argument
138 spr->dt = winsys->displaytarget_create(winsys, in softpipe_displaytarget_layout()
139 spr->base.bind, in softpipe_displaytarget_layout()
140 spr->base.format, in softpipe_displaytarget_layout()
141 spr->base.width0, in softpipe_displaytarget_layout()
142 spr->base.height0, in softpipe_displaytarget_layout()
145 &spr->stride[0] ); in softpipe_displaytarget_layout()
147 return spr->dt != NULL; in softpipe_displaytarget_layout()
159 struct softpipe_resource *spr = CALLOC_STRUCT(softpipe_resource); in softpipe_resource_create_front() local
160 if (!spr) in softpipe_resource_create_front()
165 spr->base = *templat; in softpipe_resource_create_front()
166 pipe_reference_init(&spr->base.reference, 1); in softpipe_resource_create_front()
167 spr->base.screen = screen; in softpipe_resource_create_front()
169 spr->pot = (util_is_power_of_two_or_zero(templat->width0) && in softpipe_resource_create_front()
173 if (spr->base.bind & (PIPE_BIND_DISPLAY_TARGET | in softpipe_resource_create_front()
176 if (!softpipe_displaytarget_layout(screen, spr, map_front_private)) in softpipe_resource_create_front()
180 if (!softpipe_resource_layout(screen, spr, TRUE)) in softpipe_resource_create_front()
184 return &spr->base; in softpipe_resource_create_front()
187 FREE(spr); in softpipe_resource_create_front()
203 struct softpipe_resource *spr = softpipe_resource(pt); in softpipe_resource_destroy() local
205 if (spr->dt) { in softpipe_resource_destroy()
208 winsys->displaytarget_destroy(winsys, spr->dt); in softpipe_resource_destroy()
210 else if (!spr->userBuffer) { in softpipe_resource_destroy()
212 align_free(spr->data); in softpipe_resource_destroy()
215 FREE(spr); in softpipe_resource_destroy()
226 struct softpipe_resource *spr = CALLOC_STRUCT(softpipe_resource); in softpipe_resource_from_handle() local
227 if (!spr) in softpipe_resource_from_handle()
230 spr->base = *templat; in softpipe_resource_from_handle()
231 pipe_reference_init(&spr->base.reference, 1); in softpipe_resource_from_handle()
232 spr->base.screen = screen; in softpipe_resource_from_handle()
234 spr->pot = (util_is_power_of_two_or_zero(templat->width0) && in softpipe_resource_from_handle()
238 spr->dt = winsys->displaytarget_from_handle(winsys, in softpipe_resource_from_handle()
241 &spr->stride[0]); in softpipe_resource_from_handle()
242 if (!spr->dt) in softpipe_resource_from_handle()
245 return &spr->base; in softpipe_resource_from_handle()
248 FREE(spr); in softpipe_resource_from_handle()
261 struct softpipe_resource *spr = softpipe_resource(pt); in softpipe_resource_get_handle() local
263 assert(spr->dt); in softpipe_resource_get_handle()
264 if (!spr->dt) in softpipe_resource_get_handle()
267 return winsys->displaytarget_get_handle(winsys, spr->dt, whandle); in softpipe_resource_get_handle()
276 softpipe_get_tex_image_offset(const struct softpipe_resource *spr, in softpipe_get_tex_image_offset() argument
279 unsigned offset = spr->level_offset[level]; in softpipe_get_tex_image_offset()
281 offset += layer * spr->img_stride[level]; in softpipe_get_tex_image_offset()
363 struct softpipe_resource *spr = softpipe_resource(resource); in softpipe_transfer_map() local
424 pt->stride = spr->stride[level]; in softpipe_transfer_map()
425 pt->layer_stride = spr->img_stride[level]; in softpipe_transfer_map()
427 spt->offset = softpipe_get_tex_image_offset(spr, level, box->z); in softpipe_transfer_map()
435 if (spr->dt) { in softpipe_transfer_map()
436 map = winsys->displaytarget_map(winsys, spr->dt, usage); in softpipe_transfer_map()
439 map = spr->data; in softpipe_transfer_map()
460 struct softpipe_resource *spr; in softpipe_transfer_unmap() local
463 spr = softpipe_resource(transfer->resource); in softpipe_transfer_unmap()
465 if (spr->dt) { in softpipe_transfer_unmap()
468 winsys->displaytarget_unmap(winsys, spr->dt); in softpipe_transfer_unmap()
473 spr->timestamp++; in softpipe_transfer_unmap()
489 struct softpipe_resource *spr; in softpipe_user_buffer_create() local
491 spr = CALLOC_STRUCT(softpipe_resource); in softpipe_user_buffer_create()
492 if (!spr) in softpipe_user_buffer_create()
495 pipe_reference_init(&spr->base.reference, 1); in softpipe_user_buffer_create()
496 spr->base.screen = screen; in softpipe_user_buffer_create()
497 spr->base.format = PIPE_FORMAT_R8_UNORM; /* ?? */ in softpipe_user_buffer_create()
498 spr->base.bind = bind_flags; in softpipe_user_buffer_create()
499 spr->base.usage = PIPE_USAGE_IMMUTABLE; in softpipe_user_buffer_create()
500 spr->base.flags = 0; in softpipe_user_buffer_create()
501 spr->base.width0 = bytes; in softpipe_user_buffer_create()
502 spr->base.height0 = 1; in softpipe_user_buffer_create()
503 spr->base.depth0 = 1; in softpipe_user_buffer_create()
504 spr->base.array_size = 1; in softpipe_user_buffer_create()
505 spr->userBuffer = TRUE; in softpipe_user_buffer_create()
506 spr->data = ptr; in softpipe_user_buffer_create()
508 return &spr->base; in softpipe_user_buffer_create()