Lines Matching refs:usage
174 bci.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT |
178 bci.usage |= VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT |
187 bci.usage |= VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
190 bci.usage |= VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT;
220 info.usage = ici->usage;
240 ici->tiling, ici->usage, ici->flags, &image_props);
257 VkImageUsageFlags usage = 0;
262 usage |= VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT;
266 usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
268 usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
270 usage |= VK_IMAGE_USAGE_SAMPLED_BIT;
274 usage |= VK_IMAGE_USAGE_STORAGE_BIT;
280 usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
282 usage |= VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
294 usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
299 usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
303 } else if (bind & PIPE_BIND_SAMPLER_VIEW && !(usage & VK_IMAGE_USAGE_TRANSFER_DST_BIT)) {
305 usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
311 usage |= VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
313 return usage;
332 double_check_ici(struct zink_screen *screen, VkImageCreateInfo *ici, VkImageUsageFlags usage, uint64_t *mod)
334 if (!usage)
338 ici->usage = usage;
371 VkImageUsageFlags usage = get_image_usage_for_feats(screen, feats, templ, bind, &need_extended);
373 if (double_check_ici(screen, ici, usage, mod))
374 return usage;
381 VkImageUsageFlags usage = get_image_usage_for_feats(screen, feats, templ, bind, &need_extended);
383 if (double_check_ici(screen, ici, usage, mod))
384 return usage;
393 VkImageUsageFlags usage = get_image_usage_for_feats(screen, feats, templ, bind, &need_extended);
397 usage = get_image_usage_for_feats(screen, feats, templ, bind, &need_extended);
399 if (double_check_ici(screen, ici, usage, mod))
400 return usage;
421 ici->usage = 0;
491 if (templ->usage == PIPE_USAGE_STAGING &&
502 while (!ici->usage) {
534 ici->usage = get_image_usage(screen, ici, templ, bind, modifiers_count, modifiers, &mod);
541 if (get_image_usage(screen, ici, templ, bind, modifiers_count, modifiers, &mod) != ici->usage)
624 bci.usage |= VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
632 if (templ->usage == PIPE_USAGE_STAGING)
634 else if (templ->usage == PIPE_USAGE_STREAM)
636 else if (templ->usage == PIPE_USAGE_IMMUTABLE)
700 obj->render_target = (ici.usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) != 0;
743 if (ici.usage & VK_IMAGE_USAGE_TRANSFER_DST_BIT)
892 if (templ->usage == PIPE_USAGE_STAGING && ici.tiling == VK_IMAGE_TILING_LINEAR)
898 obj->vkusage = ici.usage;
902 if (templ->flags & PIPE_RESOURCE_FLAG_MAP_COHERENT || templ->usage == PIPE_USAGE_DYNAMIC)
905 templ->usage == PIPE_USAGE_STAGING)
1005 if (templ->usage == PIPE_USAGE_STAGING && obj->is_buffer)
1012 if (templ->flags & PIPE_RESOURCE_FLAG_MAP_COHERENT || templ->usage == PIPE_USAGE_DYNAMIC)
1399 unsigned usage)
1478 unsigned usage)
1495 struct pipe_resource *pres = resource_create(pscreen, &templ2, whandle, usage, &modifier, modifier_count, NULL);
1625 assert((trans->base.b.usage & (PIPE_MAP_DEPTH_ONLY | PIPE_MAP_STENCIL_ONLY)) !=
1637 box.y, box.z, trans->base.b.level, &box, trans->base.b.usage);
1689 create_transfer(struct zink_context *ctx, struct pipe_resource *pres, unsigned usage, const struct pipe_box *box)
1693 if (usage & PIPE_MAP_THREAD_SAFE)
1695 else if (usage & TC_TRANSFER_MAP_THREADED_UNSYNC)
1704 trans->base.b.usage = usage;
1712 if (trans->base.b.usage & PIPE_MAP_THREAD_SAFE) {
1726 unsigned usage,
1733 struct zink_transfer *trans = create_transfer(ctx, pres, usage, box);
1740 usage |= PIPE_MAP_PERSISTENT;
1744 if (!(usage & (PIPE_MAP_UNSYNCHRONIZED | TC_TRANSFER_MAP_NO_INFER_UNSYNCHRONIZED)) &&
1745 usage & PIPE_MAP_WRITE && !res->base.is_shared &&
1747 usage |= PIPE_MAP_UNSYNCHRONIZED;
1751 if (usage & PIPE_MAP_DISCARD_RANGE && box->x == 0 && box->width == res->base.b.width0) {
1752 usage |= PIPE_MAP_DISCARD_WHOLE_RESOURCE;
1759 if (usage & (PIPE_MAP_DISCARD_WHOLE_RESOURCE | PIPE_MAP_DISCARD_RANGE) &&
1760 !(usage & PIPE_MAP_PERSISTENT) &&
1762 usage &= ~(PIPE_MAP_DISCARD_WHOLE_RESOURCE | PIPE_MAP_UNSYNCHRONIZED);
1763 usage |= PIPE_MAP_DISCARD_RANGE;
1767 if (usage & PIPE_MAP_DISCARD_WHOLE_RESOURCE &&
1768 !(usage & (PIPE_MAP_UNSYNCHRONIZED | TC_TRANSFER_MAP_NO_INVALIDATE))) {
1769 assert(usage & PIPE_MAP_WRITE);
1773 usage |= PIPE_MAP_UNSYNCHRONIZED;
1776 usage |= PIPE_MAP_DISCARD_RANGE;
1781 if (usage & PIPE_MAP_DISCARD_RANGE &&
1783 !(usage & (PIPE_MAP_UNSYNCHRONIZED | PIPE_MAP_PERSISTENT)))) {
1798 if (usage & TC_TRANSFER_MAP_THREADED_UNSYNC)
1807 usage |= PIPE_MAP_UNSYNCHRONIZED;
1811 usage |= PIPE_MAP_UNSYNCHRONIZED;
1813 } else if (usage & PIPE_MAP_DONTBLOCK) {
1819 usage |= PIPE_MAP_UNSYNCHRONIZED;
1820 } else if (!(usage & PIPE_MAP_UNSYNCHRONIZED) &&
1821 (((usage & PIPE_MAP_READ) && !(usage & PIPE_MAP_PERSISTENT) && res->base.b.usage != PIPE_USAGE_STAGING) || !res->obj->host_visible)) {
1822 assert(!(usage & (TC_TRANSFER_MAP_THREADED_UNSYNC | PIPE_MAP_THREAD_SAFE)));
1823 if (!res->obj->host_visible || !(usage & PIPE_MAP_ONCE)) {
1831 usage &= ~PIPE_MAP_UNSYNCHRONIZED;
1834 } else if ((usage & PIPE_MAP_UNSYNCHRONIZED) && !res->obj->host_visible) {
1844 if (!(usage & PIPE_MAP_UNSYNCHRONIZED)) {
1845 if (usage & PIPE_MAP_WRITE)
1855 if (usage & PIPE_MAP_WRITE && res->so_valid) {
1885 trans->base.b.usage = usage;
1886 if (usage & PIPE_MAP_WRITE)
1888 if ((usage & PIPE_MAP_PERSISTENT) && !(usage & PIPE_MAP_COHERENT))
1904 unsigned usage,
1911 struct zink_transfer *trans = create_transfer(ctx, pres, usage, box);
1921 if (usage & PIPE_MAP_WRITE && !(usage & PIPE_MAP_READ))
1924 else if (usage & PIPE_MAP_READ)
1929 if (usage & PIPE_MAP_DEPTH_ONLY)
1931 else if (usage & PIPE_MAP_STENCIL_ONLY)
1941 templ.usage = usage & PIPE_MAP_READ ? PIPE_USAGE_STAGING : PIPE_USAGE_STREAM;
1956 if (usage & PIPE_MAP_READ) {
1972 if (usage & PIPE_MAP_WRITE)
2007 if (usage & PIPE_MAP_WRITE) {
2014 trans->base.b.usage |= ZINK_MAP_TEMPORARY;
2015 if ((usage & PIPE_MAP_PERSISTENT) && !(usage & PIPE_MAP_COHERENT))
2035 if (trans->base.b.usage & PIPE_MAP_WRITE) {
2076 if (!(trans->base.b.usage & (PIPE_MAP_FLUSH_EXPLICIT | PIPE_MAP_COHERENT))) {
2083 if ((trans->base.b.usage & PIPE_MAP_PERSISTENT) && !(trans->base.b.usage & PIPE_MAP_COHERENT))
2107 if (trans->base.b.usage & PIPE_MAP_ONCE && !trans->staging_res)
2124 unsigned usage, unsigned offset, unsigned size, const void *data)
2130 usage |= PIPE_MAP_WRITE;
2132 if (!(usage & PIPE_MAP_DIRECTLY))
2133 usage |= PIPE_MAP_DISCARD_RANGE;
2136 map = zink_buffer_map(ctx, buffer, 0, usage, &box, &transfer);
2180 /* The Vulkan 1.1 specification says the following about valid usage