Lines Matching defs:caps
121 * - src_offset % 4 != 0 (if the caps don't allow such an offset). */
153 struct u_vbuf_caps caps;
272 void u_vbuf_get_caps(struct pipe_screen *screen, struct u_vbuf_caps *caps,
277 memset(caps, 0, sizeof(*caps));
285 caps->format_translation[i] = i;
296 caps->format_translation[format] = vbuf_format_fallbacks[i].to;
297 caps->fallback_always = true;
301 caps->buffer_offset_unaligned =
304 caps->buffer_stride_unaligned =
307 caps->velem_src_offset_unaligned =
310 caps->attrib_component_unaligned =
313 assert(caps->attrib_component_unaligned ||
314 (caps->velem_src_offset_unaligned && caps->buffer_stride_unaligned && caps->buffer_offset_unaligned));
315 caps->user_vertex_buffers =
317 caps->max_vertex_buffers =
322 caps->rewrite_restart_index = screen->get_param(screen, PIPE_CAP_EMULATE_NONFIXED_PRIMITIVE_RESTART);
323 caps->supported_restart_modes = screen->get_param(screen, PIPE_CAP_SUPPORTED_PRIM_MODES_WITH_RESTART);
324 caps->supported_restart_modes |= BITFIELD_BIT(PIPE_PRIM_PATCHES);
325 if (caps->supported_restart_modes != BITFIELD_MASK(PIPE_PRIM_MAX))
326 caps->fallback_always = true;
327 caps->fallback_always |= caps->rewrite_restart_index;
329 caps->supported_prim_modes = screen->get_param(screen, PIPE_CAP_SUPPORTED_PRIM_MODES);
330 if (caps->supported_prim_modes != BITFIELD_MASK(PIPE_PRIM_MAX))
331 caps->fallback_always = true;
334 caps->fallback_always = caps->rewrite_ubyte_ibs = true;
337 if (caps->max_vertex_buffers < 16)
338 caps->fallback_always = true;
340 if (!caps->buffer_offset_unaligned ||
341 !caps->buffer_stride_unaligned ||
342 !caps->attrib_component_unaligned ||
343 !caps->velem_src_offset_unaligned)
344 caps->fallback_always = true;
346 if (!caps->fallback_always && !caps->user_vertex_buffers)
347 caps->fallback_only_for_user_vbuffers = true;
351 u_vbuf_create(struct pipe_context *pipe, struct u_vbuf_caps *caps)
355 mgr->caps = *caps;
357 if (caps->rewrite_ubyte_ibs || caps->rewrite_restart_index ||
359 ((caps->supported_prim_modes & caps->supported_restart_modes & BITFIELD_MASK(PIPE_PRIM_MAX))) !=
362 cfg.fixed_prim_restart = caps->rewrite_restart_index;
363 cfg.primtypes_mask = caps->supported_prim_modes;
364 cfg.restart_primtypes_mask = caps->supported_restart_modes;
369 mgr->allowed_vb_mask = u_bit_consecutive(0, mgr->caps.max_vertex_buffers);
781 if (!mgr->caps.attrib_component_unaligned &&
797 if (!mgr->caps.attrib_component_unaligned)
899 format = mgr->caps.format_translation[format];
915 (!mgr->caps.velem_src_offset_unaligned &&
917 (!mgr->caps.attrib_component_unaligned &&
946 if (!mgr->caps.velem_src_offset_unaligned) {
1060 if ((!mgr->caps.buffer_offset_unaligned && vb->buffer_offset % 4 != 0) ||
1061 (!mgr->caps.buffer_stride_unaligned && vb->stride % 4 != 0)) {
1070 if (!mgr->caps.attrib_component_unaligned) {
1077 if (!mgr->caps.user_vertex_buffers && vb->is_user_buffer) {
1475 if (!mgr->caps.attrib_component_unaligned) {
1487 (info->index_size != 1 || !mgr->caps.rewrite_ubyte_ibs) &&
1490 !mgr->caps.rewrite_restart_index) &&
1491 (!info->primitive_restart || mgr->caps.supported_restart_modes & BITFIELD_BIT(info->mode)) &&
1492 mgr->caps.supported_prim_modes & BITFIELD_BIT(info->mode)) {
1780 if ((new_info.index_size == 1 && mgr->caps.rewrite_ubyte_ibs) ||
1782 ((new_info.restart_index != fixed_restart_index && mgr->caps.rewrite_restart_index) ||
1783 !(mgr->caps.supported_restart_modes & BITFIELD_BIT(new_info.mode)))) ||
1784 !(mgr->caps.supported_prim_modes & BITFIELD_BIT(new_info.mode))) {