+ case PIPE_CAP_DRAW_INDIRECT:
+ return vscreen->caps.caps.v1.bset.has_indirect_draw;
+ case PIPE_CAP_SAMPLE_SHADING:
+ case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
+ return vscreen->caps.caps.v1.bset.has_sample_shading;
+ case PIPE_CAP_CULL_DISTANCE:
+ return vscreen->caps.caps.v1.bset.has_cull;
+ case PIPE_CAP_MAX_VERTEX_STREAMS:
+ return vscreen->caps.caps.v1.glsl_level >= 400 ? 4 : 1;
+ case PIPE_CAP_CONDITIONAL_RENDER_INVERTED:
+ return vscreen->caps.caps.v1.bset.conditional_render_inverted;
+ case PIPE_CAP_TGSI_FS_FINE_DERIVATIVE:
+ return vscreen->caps.caps.v1.bset.derivative_control;
+ case PIPE_CAP_POLYGON_OFFSET_CLAMP:
+ return vscreen->caps.caps.v1.bset.polygon_offset_clamp;
+ case PIPE_CAP_QUERY_SO_OVERFLOW:
+ return vscreen->caps.caps.v1.bset.transform_feedback_overflow_query;
+ case PIPE_CAP_SHADER_BUFFER_OFFSET_ALIGNMENT:
+ return vscreen->caps.caps.v2.shader_buffer_offset_alignment;
+ case PIPE_CAP_DOUBLES:
+ return vscreen->caps.caps.v1.bset.has_fp64;
+ case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
+ return vscreen->caps.caps.v2.max_shader_patch_varyings;
+ case PIPE_CAP_SAMPLER_VIEW_TARGET:
+ return vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_TEXTURE_VIEW;
+ case PIPE_CAP_MAX_VERTEX_ATTRIB_STRIDE:
+ return vscreen->caps.caps.v2.max_vertex_attrib_stride;
+ case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
+ return vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_COPY_IMAGE;
+ case PIPE_CAP_TGSI_TXQS:
+ return vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_TXQS;
+ case PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENT:
+ return vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_FB_NO_ATTACH;
+ case PIPE_CAP_ROBUST_BUFFER_ACCESS_BEHAVIOR:
+ return vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_ROBUST_BUFFER_ACCESS;