1*61046927SAndroid Build Coastguard Worker.. _screen: 2*61046927SAndroid Build Coastguard Worker 3*61046927SAndroid Build Coastguard WorkerScreen 4*61046927SAndroid Build Coastguard Worker====== 5*61046927SAndroid Build Coastguard Worker 6*61046927SAndroid Build Coastguard WorkerA screen is an object representing the context-independent part of a device. 7*61046927SAndroid Build Coastguard Worker 8*61046927SAndroid Build Coastguard WorkerFlags and enumerations 9*61046927SAndroid Build Coastguard Worker---------------------- 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard WorkerXXX some of these don't belong in this section. 12*61046927SAndroid Build Coastguard Worker 13*61046927SAndroid Build Coastguard Worker 14*61046927SAndroid Build Coastguard Worker.. _pipe_cap: 15*61046927SAndroid Build Coastguard Worker 16*61046927SAndroid Build Coastguard WorkerPIPE_CAP_* 17*61046927SAndroid Build Coastguard Worker^^^^^^^^^^ 18*61046927SAndroid Build Coastguard Worker 19*61046927SAndroid Build Coastguard WorkerCapability queries return information about the features and limits of the 20*61046927SAndroid Build Coastguard Workerdriver/GPU. For floating-point values, use :ref:`get_paramf`, and for boolean 21*61046927SAndroid Build Coastguard Workeror integer values, use :ref:`get_param`. 22*61046927SAndroid Build Coastguard Worker 23*61046927SAndroid Build Coastguard WorkerThe integer capabilities: 24*61046927SAndroid Build Coastguard Worker 25*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_GRAPHICS``: Whether graphics is supported. If not, contexts can 26*61046927SAndroid Build Coastguard Worker only be created with PIPE_CONTEXT_COMPUTE_ONLY. 27*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_NPOT_TEXTURES``: Whether :term:`NPOT` textures may have repeat modes, 28*61046927SAndroid Build Coastguard Worker normalized coordinates, and mipmaps. 29*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS``: How many dual-source blend RTs are support. 30*61046927SAndroid Build Coastguard Worker :ref:`Blend` for more information. 31*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ANISOTROPIC_FILTER``: Whether textures can be filtered anisotropically. 32*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_RENDER_TARGETS``: The maximum number of render targets that may be 33*61046927SAndroid Build Coastguard Worker bound. 34*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_OCCLUSION_QUERY``: Whether occlusion queries are available. 35*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_QUERY_TIME_ELAPSED``: Whether PIPE_QUERY_TIME_ELAPSED queries are available. 36*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_SHADOW_MAP``: indicates whether the fragment shader hardware 37*61046927SAndroid Build Coastguard Worker can do the depth texture / Z comparison operation in TEX instructions 38*61046927SAndroid Build Coastguard Worker for shadow testing. 39*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_SWIZZLE``: Whether swizzling through sampler views is 40*61046927SAndroid Build Coastguard Worker supported. 41*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_TEXTURE_2D_SIZE``: The maximum size of 2D (and 1D) textures. 42*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_TEXTURE_3D_LEVELS``: The maximum number of mipmap levels available 43*61046927SAndroid Build Coastguard Worker for a 3D texture. 44*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS``: The maximum number of mipmap levels available 45*61046927SAndroid Build Coastguard Worker for a cubemap. 46*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_MIRROR_CLAMP_TO_EDGE``: Whether mirrored texture coordinates are 47*61046927SAndroid Build Coastguard Worker supported with the clamp-to-edge wrap mode. 48*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_MIRROR_CLAMP``: Whether mirrored texture coordinates are supported 49*61046927SAndroid Build Coastguard Worker with clamp or clamp-to-border wrap modes. 50*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_BLEND_EQUATION_SEPARATE``: Whether alpha blend equations may be different 51*61046927SAndroid Build Coastguard Worker from color blend equations, in :ref:`Blend` state. 52*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS``: The maximum number of stream buffers. 53*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PRIMITIVE_RESTART``: Whether primitive restart is supported. 54*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX``: Subset of 55*61046927SAndroid Build Coastguard Worker PRIMITIVE_RESTART where the restart index is always the fixed maximum 56*61046927SAndroid Build Coastguard Worker value for the index type. 57*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_INDEP_BLEND_ENABLE``: Whether per-rendertarget blend enabling and channel 58*61046927SAndroid Build Coastguard Worker masks are supported. If 0, then the first rendertarget's blend mask is 59*61046927SAndroid Build Coastguard Worker replicated across all MRTs. 60*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_INDEP_BLEND_FUNC``: Whether per-rendertarget blend functions are 61*61046927SAndroid Build Coastguard Worker available. If 0, then the first rendertarget's blend functions affect all 62*61046927SAndroid Build Coastguard Worker MRTs. 63*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS``: The maximum number of texture array 64*61046927SAndroid Build Coastguard Worker layers supported. If 0, the array textures are not supported at all and 65*61046927SAndroid Build Coastguard Worker the ARRAY texture targets are invalid. 66*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FS_COORD_ORIGIN_UPPER_LEFT``: Whether the upper-left origin 67*61046927SAndroid Build Coastguard Worker fragment convention is supported. 68*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FS_COORD_ORIGIN_LOWER_LEFT``: Whether the lower-left origin 69*61046927SAndroid Build Coastguard Worker fragment convention is supported. 70*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FS_COORD_PIXEL_CENTER_HALF_INTEGER``: Whether the half-integer 71*61046927SAndroid Build Coastguard Worker pixel-center fragment convention is supported. 72*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FS_COORD_PIXEL_CENTER_INTEGER``: Whether the integer 73*61046927SAndroid Build Coastguard Worker pixel-center fragment convention is supported. 74*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DEPTH_CLIP_DISABLE``: Whether the driver is capable of disabling 75*61046927SAndroid Build Coastguard Worker depth clipping (through pipe_rasterizer_state). 76*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DEPTH_CLIP_DISABLE_SEPARATE``: Whether the driver is capable of 77*61046927SAndroid Build Coastguard Worker disabling depth clipping (through pipe_rasterizer_state) separately for 78*61046927SAndroid Build Coastguard Worker the near and far plane. If not, depth_clip_near and depth_clip_far will be 79*61046927SAndroid Build Coastguard Worker equal. 80*61046927SAndroid Build Coastguard Worker ``PIPE_CAP_DEPTH_CLAMP_ENABLE``: Whether the driver is capable of 81*61046927SAndroid Build Coastguard Worker enabling depth clamping (through pipe_rasterizer_state) separately from depth 82*61046927SAndroid Build Coastguard Worker clipping. If not, depth_clamp will be the inverse of depth_clip_far. 83*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_STENCIL_EXPORT``: Whether a stencil reference value can be 84*61046927SAndroid Build Coastguard Worker written from a fragment shader. 85*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VS_INSTANCEID``: Whether ``SYSTEM_VALUE_INSTANCE_ID`` is 86*61046927SAndroid Build Coastguard Worker supported in the vertex shader. 87*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR``: Whether the driver supports 88*61046927SAndroid Build Coastguard Worker per-instance vertex attribs. 89*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FRAGMENT_COLOR_CLAMPED``: Whether fragment color clamping is 90*61046927SAndroid Build Coastguard Worker supported. That is, is the pipe_rasterizer_state::clamp_fragment_color 91*61046927SAndroid Build Coastguard Worker flag supported by the driver? If not, gallium frontends will insert 92*61046927SAndroid Build Coastguard Worker clamping code into the fragment shaders when needed. 93*61046927SAndroid Build Coastguard Worker 94*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MIXED_COLORBUFFER_FORMATS``: Whether mixed colorbuffer formats are 95*61046927SAndroid Build Coastguard Worker supported, e.g. RGBA8 and RGBA32F as the first and second colorbuffer, resp. 96*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VERTEX_COLOR_UNCLAMPED``: Whether the driver is capable of 97*61046927SAndroid Build Coastguard Worker outputting unclamped vertex colors from a vertex shader. If unsupported, 98*61046927SAndroid Build Coastguard Worker the vertex colors are always clamped. This is the default for DX9 hardware. 99*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VERTEX_COLOR_CLAMPED``: Whether the driver is capable of 100*61046927SAndroid Build Coastguard Worker clamping vertex colors when they come out of a vertex shader, as specified 101*61046927SAndroid Build Coastguard Worker by the pipe_rasterizer_state::clamp_vertex_color flag. If unsupported, 102*61046927SAndroid Build Coastguard Worker the vertex colors are never clamped. This is the default for DX10 hardware. 103*61046927SAndroid Build Coastguard Worker If both clamped and unclamped CAPs are supported, the clamping can be 104*61046927SAndroid Build Coastguard Worker controlled through pipe_rasterizer_state. If the driver cannot do vertex 105*61046927SAndroid Build Coastguard Worker color clamping, gallium frontends may insert clamping code into the vertex 106*61046927SAndroid Build Coastguard Worker shader. 107*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_GLSL_FEATURE_LEVEL``: Whether the driver supports features 108*61046927SAndroid Build Coastguard Worker equivalent to a specific GLSL version. E.g. for GLSL 1.3, report 130. 109*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY``: Whether the driver supports 110*61046927SAndroid Build Coastguard Worker features equivalent to a specific GLSL version including all legacy OpenGL 111*61046927SAndroid Build Coastguard Worker features only present in the OpenGL compatibility profile. 112*61046927SAndroid Build Coastguard Worker The only legacy features that Gallium drivers must implement are 113*61046927SAndroid Build Coastguard Worker the legacy shader inputs and outputs (colors, texcoords, fog, clipvertex, 114*61046927SAndroid Build Coastguard Worker edge flag). 115*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ESSL_FEATURE_LEVEL``: An optional cap to allow drivers to 116*61046927SAndroid Build Coastguard Worker report a higher GLSL version for GLES contexts. This is useful when a 117*61046927SAndroid Build Coastguard Worker driver does not support all the required features for a higher GL version, 118*61046927SAndroid Build Coastguard Worker but does support the required features for a higher GLES version. A driver 119*61046927SAndroid Build Coastguard Worker is allowed to return ``0`` in which case ``PIPE_CAP_GLSL_FEATURE_LEVEL`` is 120*61046927SAndroid Build Coastguard Worker used. 121*61046927SAndroid Build Coastguard Worker Note that simply returning the same value as the GLSL feature level cap is 122*61046927SAndroid Build Coastguard Worker incorrect. For example, GLSL version 3.30 does not require 123*61046927SAndroid Build Coastguard Worker :ext:`GL_EXT_gpu_shader5`, but ESSL version 3.20 es does require 124*61046927SAndroid Build Coastguard Worker :ext:`GL_EXT_gpu_shader5` 125*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION``: Whether quads adhere to 126*61046927SAndroid Build Coastguard Worker the flatshade_first setting in ``pipe_rasterizer_state``. 127*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_USER_VERTEX_BUFFERS``: Whether the driver supports user vertex 128*61046927SAndroid Build Coastguard Worker buffers. If not, gallium frontends must upload all data which is not in HW 129*61046927SAndroid Build Coastguard Worker resources. If user-space buffers are supported, the driver must also still 130*61046927SAndroid Build Coastguard Worker accept HW resource buffers. 131*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY``: This CAP describes a HW 132*61046927SAndroid Build Coastguard Worker limitation. If true, pipe_vertex_buffer::buffer_offset must always be aligned 133*61046927SAndroid Build Coastguard Worker to 4. If false, there are no restrictions on the offset. 134*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY``: This CAP describes a HW 135*61046927SAndroid Build Coastguard Worker limitation. If true, pipe_vertex_buffer::stride must always be aligned to 4. 136*61046927SAndroid Build Coastguard Worker If false, there are no restrictions on the stride. 137*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY``: This CAP describes 138*61046927SAndroid Build Coastguard Worker a HW limitation. If true, pipe_vertex_element::src_offset must always be 139*61046927SAndroid Build Coastguard Worker aligned to 4. If false, there are no restrictions on src_offset. 140*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VERTEX_ATTRIB_ELEMENT_ALIGNED_ONLY``: This CAP describes 141*61046927SAndroid Build Coastguard Worker a HW limitation. If true, the sum of 142*61046927SAndroid Build Coastguard Worker ``pipe_vertex_element::src_offset + pipe_vertex_buffer::buffer_offset + pipe_vertex_buffer::stride`` 143*61046927SAndroid Build Coastguard Worker must always be aligned to the component size for the vertex attributes 144*61046927SAndroid Build Coastguard Worker which access that buffer. If false, there are no restrictions on these values. 145*61046927SAndroid Build Coastguard Worker This CAP cannot be used with any other alignment-requiring CAPs. 146*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_COMPUTE``: Whether the implementation supports the 147*61046927SAndroid Build Coastguard Worker compute entry points defined in pipe_context and pipe_screen. 148*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT``: Describes the required 149*61046927SAndroid Build Coastguard Worker alignment of pipe_constant_buffer::buffer_offset. 150*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_START_INSTANCE``: Whether the driver supports 151*61046927SAndroid Build Coastguard Worker pipe_draw_info::start_instance. 152*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_QUERY_TIMESTAMP``: Whether PIPE_QUERY_TIMESTAMP and 153*61046927SAndroid Build Coastguard Worker the pipe_screen::get_timestamp hook are implemented. 154*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_QUERY_TIMESTAMP_BITS``: How many bits the driver uses for the 155*61046927SAndroid Build Coastguard Worker results of GL_TIMESTAMP queries. 156*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TIMER_RESOLUTION``: The resolution of the timer in nanos. 157*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_MULTISAMPLE``: Whether all MSAA resources supported 158*61046927SAndroid Build Coastguard Worker for rendering are also supported for texturing. 159*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT``: The minimum alignment that should be 160*61046927SAndroid Build Coastguard Worker expected for a pointer returned by transfer_map if the resource is 161*61046927SAndroid Build Coastguard Worker PIPE_BUFFER. In other words, the pointer returned by transfer_map is 162*61046927SAndroid Build Coastguard Worker always aligned to this value. 163*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT``: Describes the required 164*61046927SAndroid Build Coastguard Worker alignment for pipe_sampler_view::u.buf.offset, in bytes. 165*61046927SAndroid Build Coastguard Worker If a driver does not support offset/size, it should return 0. 166*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_LINEAR_IMAGE_PITCH_ALIGNMENT``: Describes the row pitch alignment 167*61046927SAndroid Build Coastguard Worker size that pipe_sampler_view::u.tex2d_from_buf must be multiple of, in pixels. 168*61046927SAndroid Build Coastguard Worker If a driver does not support images created from buffers, it should return 0. 169*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_LINEAR_IMAGE_BASE_ADDRESS_ALIGNMENT``: Describes the minimum alignment 170*61046927SAndroid Build Coastguard Worker in pixels of the offset of a host pointer for images created from buffers. 171*61046927SAndroid Build Coastguard Worker If a driver does not support images created from buffers, it should return 0. 172*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY``: Whether the driver only 173*61046927SAndroid Build Coastguard Worker supports R, RG, RGB and RGBA formats for PIPE_BUFFER sampler views. 174*61046927SAndroid Build Coastguard Worker When this is the case it should be assumed that the swizzle parameters 175*61046927SAndroid Build Coastguard Worker in the sampler view have no effect. 176*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TGSI_TEXCOORD``: This CAP describes a HW limitation. 177*61046927SAndroid Build Coastguard Worker If true, the hardware cannot replace arbitrary shader inputs with sprite 178*61046927SAndroid Build Coastguard Worker coordinates and hence the inputs that are desired to be replaceable must 179*61046927SAndroid Build Coastguard Worker be declared with TGSI_SEMANTIC_TEXCOORD instead of TGSI_SEMANTIC_GENERIC. 180*61046927SAndroid Build Coastguard Worker The rasterizer's sprite_coord_enable state therefore also applies to the 181*61046927SAndroid Build Coastguard Worker TEXCOORD semantic. 182*61046927SAndroid Build Coastguard Worker Also, TGSI_SEMANTIC_PCOORD becomes available, which labels a fragment shader 183*61046927SAndroid Build Coastguard Worker input that will always be replaced with sprite coordinates. 184*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_TRANSFER_MODES``: The ``pipe_texture_transfer_mode`` modes 185*61046927SAndroid Build Coastguard Worker that are supported for implementing a texture transfer which needs format conversions 186*61046927SAndroid Build Coastguard Worker and swizzling in gallium frontends. Generally, all hardware drivers with 187*61046927SAndroid Build Coastguard Worker dedicated memory should return PIPE_TEXTURE_TRANSFER_BLIT and all software rasterizers 188*61046927SAndroid Build Coastguard Worker should return PIPE_TEXTURE_TRANSFER_DEFAULT. PIPE_TEXTURE_TRANSFER_COMPUTE requires drivers 189*61046927SAndroid Build Coastguard Worker to support 8bit and 16bit shader storage buffer writes and to implement 190*61046927SAndroid Build Coastguard Worker pipe_screen::is_compute_copy_faster. 191*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_QUERY_PIPELINE_STATISTICS``: Whether PIPE_QUERY_PIPELINE_STATISTICS 192*61046927SAndroid Build Coastguard Worker is supported. 193*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK``: Bitmask indicating whether special 194*61046927SAndroid Build Coastguard Worker considerations have to be given to the interaction between the border color 195*61046927SAndroid Build Coastguard Worker in the sampler object and the sampler view used with it. 196*61046927SAndroid Build Coastguard Worker If PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_R600 is set, the border color 197*61046927SAndroid Build Coastguard Worker may be affected in undefined ways for any kind of permutational swizzle 198*61046927SAndroid Build Coastguard Worker (any swizzle XYZW where X/Y/Z/W are not ZERO, ONE, or R/G/B/A respectively) 199*61046927SAndroid Build Coastguard Worker in the sampler view. 200*61046927SAndroid Build Coastguard Worker If PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 is set, the border color 201*61046927SAndroid Build Coastguard Worker state should be swizzled manually according to the swizzle in the sampler 202*61046927SAndroid Build Coastguard Worker view it is intended to be used with, or herein undefined results may occur 203*61046927SAndroid Build Coastguard Worker for permutational swizzles. 204*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_TEXEL_BUFFER_ELEMENTS_UINT``: The maximum accessible number of 205*61046927SAndroid Build Coastguard Worker elements within a sampler buffer view and image buffer view. This is unsigned 206*61046927SAndroid Build Coastguard Worker integer with the maximum of 4G - 1. 207*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_VIEWPORTS``: The maximum number of viewports (and scissors 208*61046927SAndroid Build Coastguard Worker since they are linked) a driver can support. Returning 0 is equivalent 209*61046927SAndroid Build Coastguard Worker to returning 1 because every driver has to support at least a single 210*61046927SAndroid Build Coastguard Worker viewport/scissor combination. 211*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ENDIANNESS``:: The endianness of the device. Either 212*61046927SAndroid Build Coastguard Worker PIPE_ENDIAN_BIG or PIPE_ENDIAN_LITTLE. 213*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MIXED_FRAMEBUFFER_SIZES``: Whether it is allowed to have 214*61046927SAndroid Build Coastguard Worker different sizes for fb color/zs attachments. This controls whether 215*61046927SAndroid Build Coastguard Worker :ext:`GL_ARB_framebuffer_object` is provided. 216*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VS_LAYER_VIEWPORT``: Whether ``VARYING_SLOT_LAYER`` and 217*61046927SAndroid Build Coastguard Worker ``VARYING_SLOT_VIEWPORT`` are supported as vertex shader outputs. Note that 218*61046927SAndroid Build Coastguard Worker the viewport will only be used if multiple viewports are exposed. 219*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES``: The maximum number of vertices 220*61046927SAndroid Build Coastguard Worker output by a single invocation of a geometry shader. 221*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS``: The maximum number of 222*61046927SAndroid Build Coastguard Worker vertex components output by a single invocation of a geometry shader. 223*61046927SAndroid Build Coastguard Worker This is the product of the number of attribute components per vertex and 224*61046927SAndroid Build Coastguard Worker the number of output vertices. 225*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS``: Max number of components 226*61046927SAndroid Build Coastguard Worker in format that texture gather can operate on. 1 == RED, ALPHA etc, 227*61046927SAndroid Build Coastguard Worker 4 == All formats. 228*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_GATHER_SM5``: Whether the texture gather 229*61046927SAndroid Build Coastguard Worker hardware implements the SM5 features, component selection, 230*61046927SAndroid Build Coastguard Worker shadow comparison, and run-time offsets. 231*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT``: Whether 232*61046927SAndroid Build Coastguard Worker PIPE_MAP_PERSISTENT and PIPE_MAP_COHERENT are supported 233*61046927SAndroid Build Coastguard Worker for buffers. 234*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_QUERY_LOD``: Whether the ``LODQ`` instruction is 235*61046927SAndroid Build Coastguard Worker supported. 236*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MIN_TEXTURE_GATHER_OFFSET``: The minimum offset that can be used 237*61046927SAndroid Build Coastguard Worker in conjunction with a texture gather opcode. 238*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_TEXTURE_GATHER_OFFSET``: The maximum offset that can be used 239*61046927SAndroid Build Coastguard Worker in conjunction with a texture gather opcode. 240*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SAMPLE_SHADING``: Whether there is support for per-sample 241*61046927SAndroid Build Coastguard Worker shading. The context->set_min_samples function will be expected to be 242*61046927SAndroid Build Coastguard Worker implemented. 243*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_GATHER_OFFSETS``: Whether the ``TG4`` instruction can 244*61046927SAndroid Build Coastguard Worker accept 4 offsets. 245*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VS_WINDOW_SPACE_POSITION``: Whether window-space position is 246*61046927SAndroid Build Coastguard Worker supported, which disables clipping and viewport transformation. 247*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_VERTEX_STREAMS``: The maximum number of vertex streams 248*61046927SAndroid Build Coastguard Worker supported by the geometry shader. If stream-out is supported, this should be 249*61046927SAndroid Build Coastguard Worker at least 1. If stream-out is not supported, this should be 0. 250*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DRAW_INDIRECT``: Whether the driver supports taking draw arguments 251*61046927SAndroid Build Coastguard Worker { count, instance_count, start, index_bias } from a PIPE_BUFFER resource. 252*61046927SAndroid Build Coastguard Worker See pipe_draw_info. 253*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MULTI_DRAW_INDIRECT``: Whether the driver supports 254*61046927SAndroid Build Coastguard Worker pipe_draw_info::indirect_stride and ::indirect_count 255*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MULTI_DRAW_INDIRECT_PARAMS``: Whether the driver supports 256*61046927SAndroid Build Coastguard Worker taking the number of indirect draws from a separate parameter 257*61046927SAndroid Build Coastguard Worker buffer, see pipe_draw_indirect_info::indirect_draw_count. 258*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MULTI_DRAW_INDIRECT_PARTIAL_STRIDE``: Whether the driver supports 259*61046927SAndroid Build Coastguard Worker indirect draws with an arbitrary stride. 260*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FS_FINE_DERIVATIVE``: Whether the fragment shader supports 261*61046927SAndroid Build Coastguard Worker the FINE versions of DDX/DDY. 262*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VENDOR_ID``: The vendor ID of the underlying hardware. If it's 263*61046927SAndroid Build Coastguard Worker not available one should return 0xFFFFFFFF. 264*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DEVICE_ID``: The device ID (PCI ID) of the underlying hardware. 265*61046927SAndroid Build Coastguard Worker 0xFFFFFFFF if not available. 266*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ACCELERATED``: Whether the renderer is hardware accelerated. 0 means 267*61046927SAndroid Build Coastguard Worker not accelerated (i.e. CPU rendering), 1 means accelerated (i.e. GPU rendering), 268*61046927SAndroid Build Coastguard Worker -1 means unknown (i.e. an API translation driver which doesn't known what kind of 269*61046927SAndroid Build Coastguard Worker hardware it's running above). 270*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VIDEO_MEMORY``: The amount of video memory in megabytes. 271*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_UMA``: If the device has a unified memory architecture or on-card 272*61046927SAndroid Build Coastguard Worker memory and GART. 273*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CONDITIONAL_RENDER_INVERTED``: Whether the driver supports inverted 274*61046927SAndroid Build Coastguard Worker condition for conditional rendering. 275*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_VERTEX_ATTRIB_STRIDE``: The maximum supported vertex stride. 276*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SAMPLER_VIEW_TARGET``: Whether the sampler view's target can be 277*61046927SAndroid Build Coastguard Worker different than the underlying resource's, as permitted by 278*61046927SAndroid Build Coastguard Worker :ext:`GL_ARB_texture_view`. For example a 2d array texture may be reinterpreted as a 279*61046927SAndroid Build Coastguard Worker cube (array) texture and vice-versa. 280*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CLIP_HALFZ``: Whether the driver supports the 281*61046927SAndroid Build Coastguard Worker pipe_rasterizer_state::clip_halfz being set to true. This is required 282*61046927SAndroid Build Coastguard Worker for enabling :ext:`GL_ARB_clip_control`. 283*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_POLYGON_OFFSET_CLAMP``: If true, the driver implements support 284*61046927SAndroid Build Coastguard Worker for ``pipe_rasterizer_state::offset_clamp``. 285*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MULTISAMPLE_Z_RESOLVE``: Whether the driver supports blitting 286*61046927SAndroid Build Coastguard Worker a multisampled depth buffer into a single-sampled texture (or depth buffer). 287*61046927SAndroid Build Coastguard Worker Only the first sampled should be copied. 288*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_RESOURCE_FROM_USER_MEMORY``: Whether the driver can create 289*61046927SAndroid Build Coastguard Worker a pipe_resource where an already-existing piece of (malloc'd) user memory 290*61046927SAndroid Build Coastguard Worker is used as its backing storage. In other words, whether the driver can map 291*61046927SAndroid Build Coastguard Worker existing user memory into the device address space for direct device access. 292*61046927SAndroid Build Coastguard Worker The create function is pipe_screen::resource_from_user_memory. The address 293*61046927SAndroid Build Coastguard Worker and size must be page-aligned. 294*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_RESOURCE_FROM_USER_MEMORY_COMPUTE_ONLY``: Same as 295*61046927SAndroid Build Coastguard Worker ``PIPE_CAP_RESOURCE_FROM_USER_MEMORY`` but indicates it is only supported from 296*61046927SAndroid Build Coastguard Worker the compute engines. 297*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DEVICE_RESET_STATUS_QUERY``: 298*61046927SAndroid Build Coastguard Worker Whether pipe_context::get_device_reset_status is implemented. 299*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_SHADER_PATCH_VARYINGS``: 300*61046927SAndroid Build Coastguard Worker How many per-patch outputs and inputs are supported between tessellation 301*61046927SAndroid Build Coastguard Worker control and tessellation evaluation shaders, not counting in TESSINNER and 302*61046927SAndroid Build Coastguard Worker TESSOUTER. The minimum allowed value for OpenGL is 30. 303*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_FLOAT_LINEAR``: Whether the linear minification and 304*61046927SAndroid Build Coastguard Worker magnification filters are supported with single-precision floating-point 305*61046927SAndroid Build Coastguard Worker textures. 306*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_HALF_FLOAT_LINEAR``: Whether the linear minification and 307*61046927SAndroid Build Coastguard Worker magnification filters are supported with half-precision floating-point 308*61046927SAndroid Build Coastguard Worker textures. 309*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DEPTH_BOUNDS_TEST``: Whether bounds_test, bounds_min, and 310*61046927SAndroid Build Coastguard Worker bounds_max states of pipe_depth_stencil_alpha_state behave according 311*61046927SAndroid Build Coastguard Worker to the :ext:`GL_EXT_depth_bounds_test` specification. 312*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_QUERY_SAMPLES``: Whether the ``TXQS`` opcode is supported 313*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FORCE_PERSAMPLE_INTERP``: If the driver can force per-sample 314*61046927SAndroid Build Coastguard Worker interpolation for all fragment shader inputs if 315*61046927SAndroid Build Coastguard Worker pipe_rasterizer_state::force_persample_interp is set. This is only used 316*61046927SAndroid Build Coastguard Worker by GL3-level sample shading (:ext:`GL_ARB_sample_shading`). GL4-level sample 317*61046927SAndroid Build Coastguard Worker shading (:ext:`GL_ARB_gpu_shader5`) doesn't use this. While GL3 hardware has a 318*61046927SAndroid Build Coastguard Worker state for it, GL4 hardware will likely need to emulate it with a shader 319*61046927SAndroid Build Coastguard Worker variant, or by selecting the interpolation weights with a conditional 320*61046927SAndroid Build Coastguard Worker assignment in the shader. 321*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHAREABLE_SHADERS``: Whether shader CSOs can be used by any 322*61046927SAndroid Build Coastguard Worker pipe_context. Important for reducing jank at draw time by letting GL shaders 323*61046927SAndroid Build Coastguard Worker linked in one thread be used in another thread without recompiling. 324*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS``: 325*61046927SAndroid Build Coastguard Worker Whether copying between compressed and plain formats is supported where 326*61046927SAndroid Build Coastguard Worker a compressed block is copied to/from a plain pixel of the same size. 327*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CLEAR_SCISSORED``: Whether ``clear`` can accept a scissored 328*61046927SAndroid Build Coastguard Worker bounding box. 329*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DRAW_PARAMETERS``: Whether ``TGSI_SEMANTIC_BASEVERTEX``, 330*61046927SAndroid Build Coastguard Worker ``TGSI_SEMANTIC_BASEINSTANCE``, and ``TGSI_SEMANTIC_DRAWID`` are 331*61046927SAndroid Build Coastguard Worker supported in vertex shaders. 332*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_PACK_HALF_FLOAT``: Whether packed 16-bit float 333*61046927SAndroid Build Coastguard Worker packing/unpacking opcodes are supported. 334*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FS_POSITION_IS_SYSVAL``: If gallium frontends should use a 335*61046927SAndroid Build Coastguard Worker system value for the POSITION fragment shader input. 336*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FS_POINT_IS_SYSVAL``: If gallium frontends should use a system 337*61046927SAndroid Build Coastguard Worker value for the POINT fragment shader input. 338*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FS_FACE_IS_INTEGER_SYSVAL``: If gallium frontends should use 339*61046927SAndroid Build Coastguard Worker a system value for the FACE fragment shader input. 340*61046927SAndroid Build Coastguard Worker Also, the FACE system value is integer, not float. 341*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_BUFFER_OFFSET_ALIGNMENT``: Describes the required 342*61046927SAndroid Build Coastguard Worker alignment for pipe_shader_buffer::buffer_offset, in bytes. Maximum 343*61046927SAndroid Build Coastguard Worker value allowed is 256 (for GL conformance). 0 is only allowed if 344*61046927SAndroid Build Coastguard Worker shader buffers are not supported. 345*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_INVALIDATE_BUFFER``: Whether the use of ``invalidate_resource`` 346*61046927SAndroid Build Coastguard Worker for buffers is supported. 347*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_GENERATE_MIPMAP``: Indicates whether pipe_context::generate_mipmap 348*61046927SAndroid Build Coastguard Worker is supported. 349*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_STRING_MARKER``: Whether pipe->emit_string_marker() is supported. 350*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SURFACE_REINTERPRET_BLOCKS``: Indicates whether 351*61046927SAndroid Build Coastguard Worker pipe_context::create_surface supports reinterpreting a texture as a surface 352*61046927SAndroid Build Coastguard Worker of a format with different block width/height (but same block size in bits). 353*61046927SAndroid Build Coastguard Worker For example, a compressed texture image can be interpreted as a 354*61046927SAndroid Build Coastguard Worker non-compressed surface whose texels are the same number of bits as the 355*61046927SAndroid Build Coastguard Worker compressed blocks, and vice versa. The width and height of the surface is 356*61046927SAndroid Build Coastguard Worker adjusted appropriately. 357*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_QUERY_BUFFER_OBJECT``: Driver supports 358*61046927SAndroid Build Coastguard Worker context::get_query_result_resource callback. 359*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PCI_GROUP``: Return the PCI segment group number. 360*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PCI_BUS``: Return the PCI bus number. 361*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PCI_DEVICE``: Return the PCI device number. 362*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PCI_FUNCTION``: Return the PCI function number. 363*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENT``: 364*61046927SAndroid Build Coastguard Worker If non-zero, rendering to framebuffers with no surface attachments 365*61046927SAndroid Build Coastguard Worker is supported. The context->is_format_supported function will be expected 366*61046927SAndroid Build Coastguard Worker to be implemented with PIPE_FORMAT_NONE yielding the MSAA modes the hardware 367*61046927SAndroid Build Coastguard Worker supports. N.B., The maximum number of layers supported for rasterizing a 368*61046927SAndroid Build Coastguard Worker primitive on a layer is obtained from ``PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS`` 369*61046927SAndroid Build Coastguard Worker even though it can be larger than the number of layers supported by either 370*61046927SAndroid Build Coastguard Worker rendering or textures. 371*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ROBUST_BUFFER_ACCESS_BEHAVIOR``: Implementation uses bounds 372*61046927SAndroid Build Coastguard Worker checking on resource accesses by shader if the context is created with 373*61046927SAndroid Build Coastguard Worker PIPE_CONTEXT_ROBUST_BUFFER_ACCESS. See the 374*61046927SAndroid Build Coastguard Worker :ext:`GL_ARB_robust_buffer_access_behavior` extension for information on the 375*61046927SAndroid Build Coastguard Worker required behavior for out of bounds accesses and accesses to unbound 376*61046927SAndroid Build Coastguard Worker resources. 377*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CULL_DISTANCE``: Whether the driver supports the 378*61046927SAndroid Build Coastguard Worker :ext:`GL_ARB_cull_distance` extension and thus implements proper support for 379*61046927SAndroid Build Coastguard Worker culling planes. 380*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CULL_DISTANCE_NOCOMBINE``: Whether the driver wants to skip 381*61046927SAndroid Build Coastguard Worker running the ``nir_lower_clip_cull_distance_arrays`` pass in order to get 382*61046927SAndroid Build Coastguard Worker VARYING_SLOT_CULL_DIST0 slot variables. 383*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PRIMITIVE_RESTART_FOR_PATCHES``: Whether primitive restart is 384*61046927SAndroid Build Coastguard Worker supported for patch primitives. 385*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_GROUP_VOTE``: Whether the ``VOTE_*`` ops can be used in 386*61046927SAndroid Build Coastguard Worker shaders. 387*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_WINDOW_RECTANGLES``: The maximum number of window rectangles 388*61046927SAndroid Build Coastguard Worker supported in ``set_window_rectangles``. 389*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_POLYGON_OFFSET_UNITS_UNSCALED``: If true, the driver implements support 390*61046927SAndroid Build Coastguard Worker for ``pipe_rasterizer_state::offset_units_unscaled``. 391*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VIEWPORT_SUBPIXEL_BITS``: Number of bits of subpixel precision for 392*61046927SAndroid Build Coastguard Worker floating point viewport bounds. 393*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_RASTERIZER_SUBPIXEL_BITS``: Number of bits of subpixel precision used 394*61046927SAndroid Build Coastguard Worker by the rasterizer. 395*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MIXED_COLOR_DEPTH_BITS``: Whether there is non-fallback 396*61046927SAndroid Build Coastguard Worker support for color/depth format combinations that use a different 397*61046927SAndroid Build Coastguard Worker number of bits. For the purpose of this cap, Z24 is treated as 398*61046927SAndroid Build Coastguard Worker 32-bit. If set to off, that means that a B5G6R5 + Z24 or RGBA8 + Z16 399*61046927SAndroid Build Coastguard Worker combination will require a driver fallback, and should not be 400*61046927SAndroid Build Coastguard Worker advertised in the GLX/EGL config list. 401*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_ARRAY_COMPONENTS``: If true, the driver interprets the 402*61046927SAndroid Build Coastguard Worker UsageMask of input and output declarations and allows declaring arrays 403*61046927SAndroid Build Coastguard Worker in overlapping ranges. The components must be a contiguous range, e.g. a 404*61046927SAndroid Build Coastguard Worker UsageMask of xy or yzw is allowed, but xz or yw isn't. Declarations with 405*61046927SAndroid Build Coastguard Worker overlapping locations must have matching semantic names and indices, and 406*61046927SAndroid Build Coastguard Worker equal interpolation qualifiers. 407*61046927SAndroid Build Coastguard Worker Components may overlap, notably when the gaps in an array of dvec3 are 408*61046927SAndroid Build Coastguard Worker filled in. 409*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME``: Whether 410*61046927SAndroid Build Coastguard Worker :ext:`GL_ARB_transform_feedback2` is supported, including pausing/resuming 411*61046927SAndroid Build Coastguard Worker queries and having ``count_from_stream_output`` set on indirect draws to 412*61046927SAndroid Build Coastguard Worker implement glDrawTransformFeedback. Required for OpenGL 4.0. 413*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS``: Whether interleaved stream 414*61046927SAndroid Build Coastguard Worker output mode is able to interleave across buffers. This is required for 415*61046927SAndroid Build Coastguard Worker :ext:`GL_ARB_transform_feedback3`. 416*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FBFETCH``: The number of render targets whose value in the 417*61046927SAndroid Build Coastguard Worker current framebuffer can be read in the shader. 0 means framebuffer fetch 418*61046927SAndroid Build Coastguard Worker is not supported. 1 means that only the first render target can be read, 419*61046927SAndroid Build Coastguard Worker and a larger value would mean that multiple render targets are supported. 420*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FBFETCH_COHERENT``: Whether framebuffer fetches from the fragment 421*61046927SAndroid Build Coastguard Worker shader can be guaranteed to be coherent with framebuffer writes. 422*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FBFETCH_ZS``: Whether fragment shader can fetch current values of 423*61046927SAndroid Build Coastguard Worker Z/S attachments. These fetches are always coherent with framebuffer writes. 424*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_LEGACY_MATH_RULES``: Whether NIR shaders support the 425*61046927SAndroid Build Coastguard Worker ``shader_info.use_legacy_math_rules`` flag (see documentation there), and 426*61046927SAndroid Build Coastguard Worker TGSI shaders support the corresponding ``TGSI_PROPERTY_LEGACY_MATH_RULES``. 427*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FP16``: Whether 16-bit float operations are supported. 428*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DOUBLES``: Whether double precision floating-point operations 429*61046927SAndroid Build Coastguard Worker are supported. 430*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_INT64``: Whether 64-bit integer operations are supported. 431*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TGSI_TEX_TXF_LZ``: Whether TEX_LZ and TXF_LZ opcodes are 432*61046927SAndroid Build Coastguard Worker supported. 433*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_CLOCK``: Whether the CLOCK opcode is supported. 434*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_POLYGON_MODE_FILL_RECTANGLE``: Whether the 435*61046927SAndroid Build Coastguard Worker PIPE_POLYGON_MODE_FILL_RECTANGLE mode is supported for 436*61046927SAndroid Build Coastguard Worker ``pipe_rasterizer_state::fill_front`` and 437*61046927SAndroid Build Coastguard Worker ``pipe_rasterizer_state::fill_back``. 438*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SPARSE_BUFFER_PAGE_SIZE``: The page size of sparse buffers in 439*61046927SAndroid Build Coastguard Worker bytes, or 0 if sparse buffers are not supported. The page size must be at 440*61046927SAndroid Build Coastguard Worker most 64KB. 441*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_BALLOT``: Whether the BALLOT and READ_* opcodes as well as 442*61046927SAndroid Build Coastguard Worker the SUBGROUP_* semantics are supported. 443*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TES_LAYER_VIEWPORT``: Whether ``VARYING_SLOT_LAYER`` and 444*61046927SAndroid Build Coastguard Worker ``VARYING_SLOT_VIEWPORT`` are supported as tessellation evaluation 445*61046927SAndroid Build Coastguard Worker shader outputs. 446*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CAN_BIND_CONST_BUFFER_AS_VERTEX``: Whether a buffer with just 447*61046927SAndroid Build Coastguard Worker PIPE_BIND_CONSTANT_BUFFER can be legally passed to set_vertex_buffers. 448*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION``: As the name says. 449*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_POST_DEPTH_COVERAGE``: whether 450*61046927SAndroid Build Coastguard Worker ``TGSI_PROPERTY_FS_POST_DEPTH_COVERAGE`` is supported. 451*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_BINDLESS_TEXTURE``: Whether bindless texture operations are 452*61046927SAndroid Build Coastguard Worker supported. 453*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_NIR_SAMPLERS_AS_DEREF``: Whether NIR tex instructions should 454*61046927SAndroid Build Coastguard Worker reference texture and sampler as NIR derefs instead of by indices. 455*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_QUERY_SO_OVERFLOW``: Whether the 456*61046927SAndroid Build Coastguard Worker ``PIPE_QUERY_SO_OVERFLOW_PREDICATE`` and 457*61046927SAndroid Build Coastguard Worker ``PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE`` query types are supported. Note that 458*61046927SAndroid Build Coastguard Worker for a driver that does not support multiple output streams (i.e., 459*61046927SAndroid Build Coastguard Worker ``PIPE_CAP_MAX_VERTEX_STREAMS`` is 1), both query types are identical. 460*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MEMOBJ``: Whether operations on memory objects are supported. 461*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_LOAD_CONSTBUF``: True if the driver supports ``TGSI_OPCODE_LOAD`` use 462*61046927SAndroid Build Coastguard Worker with constant buffers. 463*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TILE_RASTER_ORDER``: Whether the driver supports 464*61046927SAndroid Build Coastguard Worker :ext:`GL_MESA_tile_raster_order`, using the tile_raster_order_* fields in 465*61046927SAndroid Build Coastguard Worker pipe_rasterizer_state. 466*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_COMBINED_SHADER_OUTPUT_RESOURCES``: Limit on combined shader 467*61046927SAndroid Build Coastguard Worker output resources (images + buffers + fragment outputs). If 0 the state 468*61046927SAndroid Build Coastguard Worker tracker works it out. 469*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FRAMEBUFFER_MSAA_CONSTRAINTS``: This determines limitations 470*61046927SAndroid Build Coastguard Worker on the number of samples that framebuffer attachments can have. 471*61046927SAndroid Build Coastguard Worker Possible values: 472*61046927SAndroid Build Coastguard Worker 473*61046927SAndroid Build Coastguard Worker 0. color.nr_samples == zs.nr_samples == color.nr_storage_samples 474*61046927SAndroid Build Coastguard Worker (standard MSAA quality) 475*61046927SAndroid Build Coastguard Worker 1. color.nr_samples >= zs.nr_samples == color.nr_storage_samples 476*61046927SAndroid Build Coastguard Worker (enhanced MSAA quality) 477*61046927SAndroid Build Coastguard Worker 2. color.nr_samples >= zs.nr_samples >= color.nr_storage_samples 478*61046927SAndroid Build Coastguard Worker (full flexibility in tuning MSAA quality and performance) 479*61046927SAndroid Build Coastguard Worker 480*61046927SAndroid Build Coastguard Worker All color attachments must have the same number of samples and the same 481*61046927SAndroid Build Coastguard Worker number of storage samples. 482*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SIGNED_VERTEX_BUFFER_OFFSET``: 483*61046927SAndroid Build Coastguard Worker Whether pipe_vertex_buffer::buffer_offset is treated as signed. The u_vbuf 484*61046927SAndroid Build Coastguard Worker module needs this for optimal performance in workstation applications. 485*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CONTEXT_PRIORITY_MASK``: For drivers that support per-context 486*61046927SAndroid Build Coastguard Worker priorities, this returns a bitmask of ``PIPE_CONTEXT_PRIORITY_x`` for the 487*61046927SAndroid Build Coastguard Worker supported priority levels. A driver that does not support prioritized 488*61046927SAndroid Build Coastguard Worker contexts can return 0. 489*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FENCE_SIGNAL``: True if the driver supports signaling semaphores 490*61046927SAndroid Build Coastguard Worker using fence_server_signal(). 491*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CONSTBUF0_FLAGS``: The bits of pipe_resource::flags that must be 492*61046927SAndroid Build Coastguard Worker set when binding that buffer as constant buffer 0. If the buffer doesn't have 493*61046927SAndroid Build Coastguard Worker those bits set, pipe_context::set_constant_buffer(.., 0, ..) is ignored 494*61046927SAndroid Build Coastguard Worker by the driver, and the driver can throw assertion failures. 495*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PACKED_UNIFORMS``: True if the driver supports packed uniforms 496*61046927SAndroid Build Coastguard Worker as opposed to padding to vec4s. Requires ``PIPE_SHADER_CAP_INTEGERS`` if 497*61046927SAndroid Build Coastguard Worker ``lower_uniforms_to_ubo`` is set. 498*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CONSERVATIVE_RASTER_POST_SNAP_TRIANGLES``: Whether the 499*61046927SAndroid Build Coastguard Worker ``PIPE_CONSERVATIVE_RASTER_POST_SNAP`` mode is supported for triangles. 500*61046927SAndroid Build Coastguard Worker The post-snap mode means the conservative rasterization occurs after 501*61046927SAndroid Build Coastguard Worker the conversion from floating-point to fixed-point coordinates 502*61046927SAndroid Build Coastguard Worker on the subpixel grid. 503*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CONSERVATIVE_RASTER_POST_SNAP_POINTS_LINES``: Whether the 504*61046927SAndroid Build Coastguard Worker ``PIPE_CONSERVATIVE_RASTER_POST_SNAP`` mode is supported for points and lines. 505*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CONSERVATIVE_RASTER_PRE_SNAP_TRIANGLES``: Whether the 506*61046927SAndroid Build Coastguard Worker ``PIPE_CONSERVATIVE_RASTER_PRE_SNAP`` mode is supported for triangles. 507*61046927SAndroid Build Coastguard Worker The pre-snap mode means the conservative rasterization occurs before 508*61046927SAndroid Build Coastguard Worker the conversion from floating-point to fixed-point coordinates. 509*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CONSERVATIVE_RASTER_PRE_SNAP_POINTS_LINES``: Whether the 510*61046927SAndroid Build Coastguard Worker ``PIPE_CONSERVATIVE_RASTER_PRE_SNAP`` mode is supported for points and lines. 511*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CONSERVATIVE_RASTER_POST_DEPTH_COVERAGE``: Whether 512*61046927SAndroid Build Coastguard Worker ``PIPE_CAP_POST_DEPTH_COVERAGE`` works with conservative rasterization. 513*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CONSERVATIVE_RASTER_INNER_COVERAGE``: Whether 514*61046927SAndroid Build Coastguard Worker inner_coverage from :ext:`GL_INTEL_conservative_rasterization` is supported. 515*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_CONSERVATIVE_RASTER_SUBPIXEL_PRECISION_BIAS``: The maximum 516*61046927SAndroid Build Coastguard Worker subpixel precision bias in bits during conservative rasterization. 517*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PROGRAMMABLE_SAMPLE_LOCATIONS``: True is the driver supports 518*61046927SAndroid Build Coastguard Worker programmable sample location through ```get_sample_pixel_grid``` and 519*61046927SAndroid Build Coastguard Worker ```set_sample_locations```. 520*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_GS_INVOCATIONS``: Maximum supported value of 521*61046927SAndroid Build Coastguard Worker TGSI_PROPERTY_GS_INVOCATIONS. 522*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_SHADER_BUFFER_SIZE_UINT``: Maximum supported size for binding 523*61046927SAndroid Build Coastguard Worker with set_shader_buffers. This is unsigned integer with the maximum of 4GB - 1. 524*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_COMBINED_SHADER_BUFFERS``: Maximum total number of shader 525*61046927SAndroid Build Coastguard Worker buffers. A value of 0 means the sum of all per-shader stage maximums (see 526*61046927SAndroid Build Coastguard Worker ``PIPE_SHADER_CAP_MAX_SHADER_BUFFERS``). 527*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_COMBINED_HW_ATOMIC_COUNTERS``: Maximum total number of atomic 528*61046927SAndroid Build Coastguard Worker counters. A value of 0 means the default value (MAX_ATOMIC_COUNTERS = 4096). 529*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_COMBINED_HW_ATOMIC_COUNTER_BUFFERS``: Maximum total number of 530*61046927SAndroid Build Coastguard Worker atomic counter buffers. A value of 0 means the sum of all per-shader stage 531*61046927SAndroid Build Coastguard Worker maximums (see ``PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS``). 532*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_TEXTURE_UPLOAD_MEMORY_BUDGET``: Maximum recommend memory size 533*61046927SAndroid Build Coastguard Worker for all active texture uploads combined. This is a performance hint. 534*61046927SAndroid Build Coastguard Worker 0 means no limit. 535*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_VERTEX_ELEMENT_SRC_OFFSET``: The maximum supported value for 536*61046927SAndroid Build Coastguard Worker of pipe_vertex_element::src_offset. 537*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SURFACE_SAMPLE_COUNT``: Whether the driver 538*61046927SAndroid Build Coastguard Worker supports pipe_surface overrides of resource nr_samples. If set, will 539*61046927SAndroid Build Coastguard Worker enable :ext:`GL_EXT_multisampled_render_to_texture`. 540*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_IMAGE_ATOMIC_FLOAT_ADD``: Atomic floating point adds are 541*61046927SAndroid Build Coastguard Worker supported on images, buffers, and shared memory. 542*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS``: True if the driver wants TESSINNER and TESSOUTER to be inputs (rather than system values) for tessellation evaluation shaders. 543*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DEST_SURFACE_SRGB_CONTROL``: Indicates whether the drivers 544*61046927SAndroid Build Coastguard Worker supports switching the format between sRGB and linear for a surface that is 545*61046927SAndroid Build Coastguard Worker used as destination in draw and blit calls. 546*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_VARYINGS``: The maximum number of fragment shader 547*61046927SAndroid Build Coastguard Worker varyings. This will generally correspond to 548*61046927SAndroid Build Coastguard Worker ``PIPE_SHADER_CAP_MAX_INPUTS`` for the fragment shader, but in some 549*61046927SAndroid Build Coastguard Worker cases may be a smaller number. 550*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_COMPUTE_GRID_INFO_LAST_BLOCK``: Whether pipe_grid_info::last_block 551*61046927SAndroid Build Coastguard Worker is implemented by the driver. See struct pipe_grid_info for more details. 552*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_COMPUTE_SHADER_DERIVATIVE``: True if the driver supports derivatives (and texture lookups with implicit derivatives) in compute shaders. 553*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_IMAGE_LOAD_FORMATTED``: True if a format for image loads does not need to be specified in the shader IR 554*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_IMAGE_STORE_FORMATTED``: True if a format for image stores does not need to be specified in the shader IR 555*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_THROTTLE``: Whether or not gallium frontends should throttle pipe_context 556*61046927SAndroid Build Coastguard Worker execution. 0 = throttling is disabled. 557*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DMABUF``: Whether Linux DMABUF handles are supported by 558*61046927SAndroid Build Coastguard Worker resource_from_handle and resource_get_handle. 559*61046927SAndroid Build Coastguard Worker Possible bit field values: 560*61046927SAndroid Build Coastguard Worker 561*61046927SAndroid Build Coastguard Worker 1. ``DRM_PRIME_CAP_IMPORT``: resource_from_handle is supported 562*61046927SAndroid Build Coastguard Worker 2. ``DRM_PRIME_CAP_EXPORT``: resource_get_handle is supported 563*61046927SAndroid Build Coastguard Worker 564*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CL_GL_SHARING``: True if driver supports everything required by a frontend implementing the CL extension, and 565*61046927SAndroid Build Coastguard Worker also supports importing/exporting all of pipe_texture_target via dma buffers. 566*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA``: Whether VDPAU and VAAPI 567*61046927SAndroid Build Coastguard Worker should use a compute-based blit instead of pipe_context::blit and compute pipeline for compositing images. 568*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FRAGMENT_SHADER_INTERLOCK``: True if fragment shader interlock 569*61046927SAndroid Build Coastguard Worker functionality is supported. 570*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ATOMIC_FLOAT_MINMAX``: Atomic float point minimum, 571*61046927SAndroid Build Coastguard Worker maximum, exchange and compare-and-swap support to buffer and shared variables. 572*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TGSI_DIV``: Whether opcode DIV is supported 573*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DITHERING``: Whether dithering is supported 574*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD``: Whether texture lookups with 575*61046927SAndroid Build Coastguard Worker explicit LOD is supported in the fragment shader. 576*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES``: True if the driver supports 577*61046927SAndroid Build Coastguard Worker derivatives in fragment shaders. 578*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_SHADOW_LOD``: True if the driver supports shadow sampler 579*61046927SAndroid Build Coastguard Worker types with texture functions having interaction with LOD of texture lookup. 580*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_SAMPLES_IDENTICAL``: True if the driver supports a shader query to tell whether all samples of a multisampled surface are definitely identical. 581*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_IMAGE_ATOMIC_INC_WRAP``: Atomic increment/decrement + wrap around 582*61046927SAndroid Build Coastguard Worker are supported. 583*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF``: True if gallium frontends should 584*61046927SAndroid Build Coastguard Worker turn arrays whose contents can be deduced at compile time into constant 585*61046927SAndroid Build Coastguard Worker buffer loads, or false if the driver can handle such arrays itself in a more 586*61046927SAndroid Build Coastguard Worker efficient manner (such as through nir_opt_large_constants() and nir->constant_data). 587*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_GL_SPIRV``: True if the driver supports :ext:`GL_ARB_gl_spirv` extension. 588*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS``: True if the driver supports Variable Pointers in SPIR-V shaders. 589*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION``: True if driver supports demote keyword in GLSL programs. 590*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE``: True if driver wants the TG4 component encoded in sampler swizzle rather than as a separate source. 591*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_FLATSHADE``: Driver supports pipe_rasterizer_state::flatshade. Must be 1 592*61046927SAndroid Build Coastguard Worker for non-NIR drivers or gallium nine. 593*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ALPHA_TEST``: Driver supports alpha-testing. Must be 1 594*61046927SAndroid Build Coastguard Worker for non-NIR drivers or gallium nine. If set, frontend may set 595*61046927SAndroid Build Coastguard Worker ``pipe_depth_stencil_alpha_state->alpha_enabled`` and ``alpha_func``. 596*61046927SAndroid Build Coastguard Worker Otherwise, alpha test will be lowered to a comparison and discard_if in the 597*61046927SAndroid Build Coastguard Worker fragment shader. 598*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_POINT_SIZE_FIXED``: Driver supports point-sizes that are fixed, 599*61046927SAndroid Build Coastguard Worker as opposed to writing gl_PointSize for every point. 600*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TWO_SIDED_COLOR``: Driver supports two-sided coloring. Must be 1 601*61046927SAndroid Build Coastguard Worker for non-NIR drivers. If set, pipe_rasterizer_state may be set to indicate 602*61046927SAndroid Build Coastguard Worker that back-facing primitives should use the back-side color as the FS input 603*61046927SAndroid Build Coastguard Worker color. If unset, mesa/st will lower it to gl_FrontFacing reads in the 604*61046927SAndroid Build Coastguard Worker fragment shader. 605*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CLIP_PLANES``: Driver supports user-defined clip-planes. 0 denotes none, 1 denotes MAX_CLIP_PLANES. > 1 overrides MAX. When is 0, pipe_rasterizer_state::clip_plane_enable is unused. 606*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_VERTEX_BUFFERS``: Number of supported vertex buffers. 607*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_OPENCL_INTEGER_FUNCTIONS``: Driver supports extended OpenCL-style integer functions. This includes average, saturating addition, saturating subtraction, absolute difference, count leading zeros, and count trailing zeros. 608*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_INTEGER_MULTIPLY_32X16``: Driver supports integer multiplication between a 32-bit integer and a 16-bit integer. If the second operand is 32-bits, the upper 16-bits are ignored, and the low 16-bits are possibly sign extended as necessary. 609*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_NIR_IMAGES_AS_DEREF``: Whether NIR image load/store intrinsics should be nir_intrinsic_image_deref_* instead of nir_intrinsic_image_*. Defaults to true. 610*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PACKED_STREAM_OUTPUT``: Driver supports packing optimization for stream output (e.g. GL transform feedback captured variables). Defaults to true. 611*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED``: Driver needs the nir_lower_viewport_transform pass to be enabled. This also means that the gl_Position value is modified and should be lowered for transform feedback, if needed. Defaults to false. 612*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PSIZ_CLAMPED``: Driver needs for the point size to be clamped. Additionally, the gl_PointSize has been modified and its value should be lowered for transform feedback, if needed. Defaults to false. 613*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_GL_BEGIN_END_BUFFER_SIZE``: Buffer size used to upload vertices for glBegin/glEnd. 614*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VIEWPORT_SWIZZLE``: Whether pipe_viewport_state::swizzle can be used to specify pre-clipping swizzling of coordinates (see :ext:`GL_NV_viewport_swizzle`). 615*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SYSTEM_SVM``: True if all application memory can be shared with the GPU without explicit mapping. 616*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VIEWPORT_MASK``: Whether ``TGSI_SEMANTIC_VIEWPORT_MASK`` and ``TGSI_PROPERTY_LAYER_VIEWPORT_RELATIVE`` are supported (see :ext:`GL_NV_viewport_array2`). 617*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAP_UNSYNCHRONIZED_THREAD_SAFE``: Whether mapping a buffer as unsynchronized from any thread is safe. 618*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_GLSL_ZERO_INIT``: Choose a default zero initialization some GLSL variables. If ``1``, then all GLSL shader variables and gl_FragColor are initialized to zero. If ``2``, then shader out variables are not initialized but function out variables are. 619*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_BLEND_EQUATION_ADVANCED``: Driver supports blend equation advanced without necessarily supporting FBFETCH. 620*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_NIR_ATOMICS_AS_DEREF``: Whether NIR atomics instructions should reference atomics as NIR derefs instead of by indices. 621*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_NO_CLIP_ON_COPY_TEX``: Driver doesn't want x/y/width/height clipped based on src size when doing a copy texture operation (e.g.: may want out-of-bounds reads that produce 0 instead of leaving the texture content undefined) 622*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_TEXTURE_MB``: Maximum texture size in MB (default is 1024) 623*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DEVICE_PROTECTED_SURFACE``: Whether the device support protected / encrypted content. 624*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PREFER_REAL_BUFFER_IN_CONSTBUF0``: The state tracker is encouraged to upload constants into a real buffer and bind it into constant buffer 0 instead of binding a user pointer. This may enable a faster code-path in a gallium frontend for drivers that really prefer a real buffer. 625*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_GL_CLAMP``: Driver natively supports GL_CLAMP. Required for non-NIR drivers with the GL frontend. NIR drivers with the cap unavailable will have GL_CLAMP lowered to txd/txl with a saturate on the coordinates. 626*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXRECT``: Driver supports rectangle textures. Required for OpenGL on ``!prefers_nir`` drivers. If this cap is not present, st/mesa will lower the NIR to use normal 2D texture sampling by using either ``txs`` or ``nir_intrinsic_load_texture_scaling`` to normalize the texture coordinates. 627*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SAMPLER_REDUCTION_MINMAX``: Driver supports EXT min/max sampler reduction. 628*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SAMPLER_REDUCTION_MINMAX_ARB``: Driver supports ARB min/max sampler reduction with format queries. 629*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_EMULATE_NONFIXED_PRIMITIVE_RESTART``: Driver requests all draws using a non-fixed restart index to be rewritten to use a fixed restart index. 630*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SUPPORTED_PRIM_MODES``: A bitmask of the ``mesa_prim`` enum values that the driver can natively support. 631*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SUPPORTED_PRIM_MODES_WITH_RESTART``: A bitmask of the ``mesa_prim`` enum values that the driver can natively support for primitive restart. Only useful if ``PIPE_CAP_PRIMITIVE_RESTART`` is also exported. 632*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PREFER_BACK_BUFFER_REUSE``: Only applies to DRI_PRIME. If 1, the driver prefers that DRI3 tries to use the same back buffer each frame. If 0, this means DRI3 will at least use 2 back buffers and ping-pong between them to allow the tiled->linear copy to run in parallel. 633*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DRAW_VERTEX_STATE``: Driver supports ``pipe_screen::create_vertex_state/vertex_state_destroy`` and ``pipe_context::draw_vertex_state``. Only used by display lists and designed to serve vbo_save. 634*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PREFER_POT_ALIGNED_VARYINGS``: Driver prefers varyings to be aligned to power of two in a slot. If this cap is enabled, vec4 varying will be placed in .xyzw components of the varying slot, vec3 in .xyz and vec2 in .xy or .zw 635*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_SPARSE_TEXTURE_SIZE``: Maximum 1D/2D/rectangle texture image dimension for a sparse texture. 636*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_SPARSE_3D_TEXTURE_SIZE``: Maximum 3D texture image dimension for a sparse texture. 637*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_SPARSE_ARRAY_TEXTURE_LAYERS``: Maximum number of layers in a sparse array texture. 638*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS``: TRUE if there are no restrictions on the allocation of mipmaps in sparse textures and FALSE otherwise. See SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB description in :ext:`GL_ARB_sparse_texture` extension spec. 639*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_QUERY_SPARSE_TEXTURE_RESIDENCY``: TRUE if shader sparse texture sample instruction could also return the residency information. 640*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_CLAMP_SPARSE_TEXTURE_LOD``: TRUE if shader sparse texture sample instruction support clamp the minimal lod to prevent read from uncommitted pages. 641*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ALLOW_DRAW_OUT_OF_ORDER``: TRUE if the driver allows the "draw out of order" optimization to be enabled. See _mesa_update_allow_draw_out_of_order for more details. 642*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MAX_CONSTANT_BUFFER_SIZE_UINT``: Maximum bound constant buffer size in bytes. This is unsigned integer with the maximum of 4GB - 1. This applies to all constant buffers used by UBOs, unlike ``PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE``, which is specifically for GLSL uniforms. 643*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_HARDWARE_GL_SELECT``: Enable hardware accelerated GL_SELECT for this driver. 644*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_DEVICE_PROTECTED_CONTEXT``: Whether the device supports protected / encrypted context which can manipulate protected / encrypted content (some devices might need protected contexts to access protected content, whereas ``PIPE_CAP_DEVICE_PROTECTED_SURFACE`` does not require any particular context to do so). 645*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ALLOW_GLTHREAD_BUFFER_SUBDATA_OPT``: Whether to allow glthread to convert glBufferSubData to glCopyBufferSubData. This may improve or worsen performance depending on your driver. 646*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_NULL_TEXTURES`` : Whether the driver supports sampling from NULL textures. 647*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ASTC_VOID_EXTENTS_NEED_DENORM_FLUSH`` : True if the driver/hardware needs denormalized values in ASTC void extent blocks flushed to zero. 648*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_VALIDATE_ALL_DIRTY_STATES`` : Whether state validation must also validate the state changes for resources types used in the previous shader but not in the current shader. 649*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_HAS_CONST_BW``: Whether the driver only supports non-data-dependent layouts (ie. not bandwidth compressed formats like AFBC, UBWC, etc), or supports ``PIPE_BIND_CONST_BW`` to disable data-dependent layouts on requested resources. 650*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_PERFORMANCE_MONITOR``: Whether GL_AMD_performance_monitor should be exposed. 651*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_TEXTURE_SAMPLER_INDEPENDENT``: Whether sampler views and sampler states are independent objects, meaning both can be freely mixed and matched by the frontend. This isn't required for OpenGL where on the shader level those are the same object. However for proper gallium nine and OpenCL support this is required. 652*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_ASTC_DECODE_MODE``: Whether the driver supports ASTC decode precision. The :ext:`GL_EXT_texture_compression_astc_decode_mode` extension will only get exposed if :ext:`GL_KHR_texture_compression_astc_ldr<GL_KHR_texture_compression_astc_hdr>` is also supported. 653*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_SUBGROUP_SIZE``: A fixed subgroup size shader runs on GPU when GLSL GL_KHR_shader_subgroup_* extensions are enabled. 654*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_SUBGROUP_SUPPORTED_STAGES``: Bitmask of shader stages which support GL_KHR_shader_subgroup_* intrinsics. 655*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_SUBGROUP_SUPPORTED_FEATURES``: Bitmask of shader subgroup features listed in :ext:`GL_KHR_shader_subgroup`. 656*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_SHADER_SUBGROUP_QUAD_ALL_STAGES``: Whether shader subgroup quad operations are supported by shader stages other than fragment shader. 657*61046927SAndroid Build Coastguard Worker* ``PIPE_CAP_MULTIVIEW``: Whether multiview rendering of array textures is supported. A return of ``1`` indicates support for OVR_multiview, and ``2`` additionally supports OVR_multiview2. 658*61046927SAndroid Build Coastguard Worker 659*61046927SAndroid Build Coastguard Worker 660*61046927SAndroid Build Coastguard Worker.. _pipe_capf: 661*61046927SAndroid Build Coastguard Worker 662*61046927SAndroid Build Coastguard WorkerPIPE_CAPF_* 663*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^ 664*61046927SAndroid Build Coastguard Worker 665*61046927SAndroid Build Coastguard WorkerThe floating-point capabilities are: 666*61046927SAndroid Build Coastguard Worker 667*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MIN_LINE_WIDTH``: The minimum width of a regular line. 668*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MIN_LINE_WIDTH_AA``: The minimum width of a smoothed line. 669*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MAX_LINE_WIDTH``: The maximum width of a regular line. 670*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MAX_LINE_WIDTH_AA``: The maximum width of a smoothed line. 671*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_LINE_WIDTH_GRANULARITY``: The line width is rounded to a multiple of this number. 672*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MIN_POINT_SIZE``: The minimum width and height of a point. 673*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MIN_POINT_SIZE_AA``: The minimum width and height of a smoothed point. 674*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MAX_POINT_SIZE``: The maximum width and height of a point. 675*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MAX_POINT_SIZE_AA``: The maximum width and height of a smoothed point. 676*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_POINT_SIZE_GRANULARITY``: The point size is rounded to a multiple of this number. 677*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MAX_TEXTURE_ANISOTROPY``: The maximum level of anisotropy that can be 678*61046927SAndroid Build Coastguard Worker applied to anisotropically filtered textures. 679*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MAX_TEXTURE_LOD_BIAS``: The maximum :term:`LOD` bias that may be applied 680*61046927SAndroid Build Coastguard Worker to filtered textures. 681*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MIN_CONSERVATIVE_RASTER_DILATE``: The minimum conservative rasterization 682*61046927SAndroid Build Coastguard Worker dilation. 683*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_MAX_CONSERVATIVE_RASTER_DILATE``: The maximum conservative rasterization 684*61046927SAndroid Build Coastguard Worker dilation. 685*61046927SAndroid Build Coastguard Worker* ``PIPE_CAPF_CONSERVATIVE_RASTER_DILATE_GRANULARITY``: The conservative rasterization 686*61046927SAndroid Build Coastguard Worker dilation granularity for values relative to the minimum dilation. 687*61046927SAndroid Build Coastguard Worker 688*61046927SAndroid Build Coastguard Worker 689*61046927SAndroid Build Coastguard Worker.. _pipe_shader_cap: 690*61046927SAndroid Build Coastguard Worker 691*61046927SAndroid Build Coastguard WorkerPIPE_SHADER_CAP_* 692*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^ 693*61046927SAndroid Build Coastguard Worker 694*61046927SAndroid Build Coastguard WorkerThese are per-shader-stage capabitity queries. Different shader stages may 695*61046927SAndroid Build Coastguard Workersupport different features. 696*61046927SAndroid Build Coastguard Worker 697*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_INSTRUCTIONS``: The maximum number of instructions. 698*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS``: The maximum number of arithmetic instructions. 699*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS``: The maximum number of texture instructions. 700*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS``: The maximum number of texture indirections. 701*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH``: The maximum nested control flow depth. 702*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_INPUTS``: The maximum number of input registers. 703*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_OUTPUTS``: The maximum number of output registers. 704*61046927SAndroid Build Coastguard Worker This is valid for all shaders except the fragment shader. 705*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE``: The maximum size of constant buffer 0 in bytes. 706*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_CONST_BUFFERS``: Maximum number of constant buffers that can be bound 707*61046927SAndroid Build Coastguard Worker to any shader stage using ``set_constant_buffer``. If 0 or 1, the pipe will 708*61046927SAndroid Build Coastguard Worker only permit binding one constant buffer per shader. 709*61046927SAndroid Build Coastguard Worker 710*61046927SAndroid Build Coastguard Worker If a value greater than 0 is returned, the driver can have multiple 711*61046927SAndroid Build Coastguard Worker constant buffers bound to shader stages. The CONST register file is 712*61046927SAndroid Build Coastguard Worker accessed with two-dimensional indices, like in the example below. 713*61046927SAndroid Build Coastguard Worker 714*61046927SAndroid Build Coastguard Worker :: 715*61046927SAndroid Build Coastguard Worker 716*61046927SAndroid Build Coastguard Worker DCL CONST[0][0..7] # declare first 8 vectors of constbuf 0 717*61046927SAndroid Build Coastguard Worker DCL CONST[3][0] # declare first vector of constbuf 3 718*61046927SAndroid Build Coastguard Worker MOV OUT[0], CONST[0][3] # copy vector 3 of constbuf 0 719*61046927SAndroid Build Coastguard Worker 720*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_TEMPS``: The maximum number of temporary registers. 721*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_CONT_SUPPORTED``: Whether continue is supported. 722*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR``: Whether indirect addressing 723*61046927SAndroid Build Coastguard Worker of the input file is supported. 724*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR``: Whether indirect addressing 725*61046927SAndroid Build Coastguard Worker of the output file is supported. 726*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR``: Whether indirect addressing 727*61046927SAndroid Build Coastguard Worker of the temporary file is supported. 728*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_INDIRECT_CONST_ADDR``: Whether indirect addressing 729*61046927SAndroid Build Coastguard Worker of the constant file is supported. 730*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_SUBROUTINES``: Whether subroutines are supported, i.e. 731*61046927SAndroid Build Coastguard Worker BGNSUB, ENDSUB, CAL, and RET, including RET in the main block. 732*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_INTEGERS``: Whether integer opcodes are supported. 733*61046927SAndroid Build Coastguard Worker If unsupported, only float opcodes are supported. 734*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_INT64_ATOMICS``: Whether int64 atomic opcodes are supported. The device needs to support add, sub, swap, cmpswap, and, or, xor, min, and max. 735*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_FP16``: Whether half precision floating-point opcodes are supported. 736*61046927SAndroid Build Coastguard Worker If unsupported, half precision ops need to be lowered to full precision. 737*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_FP16_DERIVATIVES``: Whether half precision floating-point 738*61046927SAndroid Build Coastguard Worker DDX and DDY opcodes are supported. 739*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_FP16_CONST_BUFFERS``: Whether half precision floating-point 740*61046927SAndroid Build Coastguard Worker constant buffer loads are supported. Drivers are recommended to report 0 741*61046927SAndroid Build Coastguard Worker if x86 F16C is not supported by the CPU (or an equivalent instruction set 742*61046927SAndroid Build Coastguard Worker on other CPU architectures), otherwise they could be impacted by emulated 743*61046927SAndroid Build Coastguard Worker FP16 conversions in glUniform. 744*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_INT16``: Whether 16-bit signed and unsigned integer types 745*61046927SAndroid Build Coastguard Worker are supported. 746*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_GLSL_16BIT_CONSTS``: Lower mediump constants to 16-bit. 747*61046927SAndroid Build Coastguard Worker Note that 16-bit constants are not lowered to uniforms in GLSL. 748*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS``: The maximum number of texture 749*61046927SAndroid Build Coastguard Worker samplers. 750*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS``: The maximum number of texture 751*61046927SAndroid Build Coastguard Worker sampler views. Must not be lower than PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS. 752*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE``: Whether the driver doesn't 753*61046927SAndroid Build Coastguard Worker ignore tgsi_declaration_range::Last for shader inputs and outputs. 754*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_SHADER_BUFFERS``: Maximum number of memory buffers 755*61046927SAndroid Build Coastguard Worker (also used to implement atomic counters). Having this be non-0 also 756*61046927SAndroid Build Coastguard Worker implies support for the ``LOAD``, ``STORE``, and ``ATOM*`` TGSI 757*61046927SAndroid Build Coastguard Worker opcodes. 758*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_SUPPORTED_IRS``: Supported representations of the 759*61046927SAndroid Build Coastguard Worker program. It should be a mask of ``pipe_shader_ir`` bits. 760*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_SHADER_IMAGES``: Maximum number of image units. 761*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS``: If atomic counters are separate, 762*61046927SAndroid Build Coastguard Worker how many HW counters are available for this stage. (0 uses SSBO atomics). 763*61046927SAndroid Build Coastguard Worker* ``PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS``: If atomic counters are 764*61046927SAndroid Build Coastguard Worker separate, how many atomic counter buffers are available for this stage. 765*61046927SAndroid Build Coastguard Worker 766*61046927SAndroid Build Coastguard Worker.. _pipe_compute_cap: 767*61046927SAndroid Build Coastguard Worker 768*61046927SAndroid Build Coastguard WorkerPIPE_COMPUTE_CAP_* 769*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^^ 770*61046927SAndroid Build Coastguard Worker 771*61046927SAndroid Build Coastguard WorkerCompute-specific capabilities. They can be queried using 772*61046927SAndroid Build Coastguard Workerpipe_screen::get_compute_param. 773*61046927SAndroid Build Coastguard Worker 774*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_IR_TARGET``: A description of the target of the form 775*61046927SAndroid Build Coastguard Worker ``processor-arch-manufacturer-os`` that will be passed on to the compiler. 776*61046927SAndroid Build Coastguard Worker This CAP is only relevant for drivers that specify PIPE_SHADER_IR_NATIVE for 777*61046927SAndroid Build Coastguard Worker their preferred IR. 778*61046927SAndroid Build Coastguard Worker Value type: null-terminated string. Shader IR type dependent. 779*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_GRID_DIMENSION``: Number of supported dimensions 780*61046927SAndroid Build Coastguard Worker for grid and block coordinates. Value type: ``uint64_t``. Shader IR type dependent. 781*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_GRID_SIZE``: Maximum grid size in block 782*61046927SAndroid Build Coastguard Worker units. Value type: ``uint64_t []``. Shader IR type dependent. 783*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_BLOCK_SIZE``: Maximum block size in thread 784*61046927SAndroid Build Coastguard Worker units. Value type: ``uint64_t []``. Shader IR type dependent. 785*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_THREADS_PER_BLOCK``: Maximum number of threads that 786*61046927SAndroid Build Coastguard Worker a single block can contain. Value type: ``uint64_t``. Shader IR type dependent. 787*61046927SAndroid Build Coastguard Worker This may be less than the product of the components of MAX_BLOCK_SIZE and is 788*61046927SAndroid Build Coastguard Worker usually limited by the number of threads that can be resident simultaneously 789*61046927SAndroid Build Coastguard Worker on a compute unit. 790*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_GLOBAL_SIZE``: Maximum size of the GLOBAL 791*61046927SAndroid Build Coastguard Worker resource. Value type: ``uint64_t``. Shader IR type dependent. 792*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_LOCAL_SIZE``: Maximum size of the LOCAL 793*61046927SAndroid Build Coastguard Worker resource. Value type: ``uint64_t``. Shader IR type dependent. 794*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_PRIVATE_SIZE``: Maximum size of the PRIVATE 795*61046927SAndroid Build Coastguard Worker resource. Value type: ``uint64_t``. Shader IR type dependent. 796*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_INPUT_SIZE``: Maximum size of the INPUT 797*61046927SAndroid Build Coastguard Worker resource. Value type: ``uint64_t``. Shader IR type dependent. 798*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_MEM_ALLOC_SIZE``: Maximum size of a memory object 799*61046927SAndroid Build Coastguard Worker allocation in bytes. Value type: ``uint64_t``. 800*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_CLOCK_FREQUENCY``: Maximum frequency of the GPU 801*61046927SAndroid Build Coastguard Worker clock in MHz. Value type: ``uint32_t`` 802*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_COMPUTE_UNITS``: Maximum number of compute units 803*61046927SAndroid Build Coastguard Worker Value type: ``uint32_t`` 804*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_SUBGROUPS``: The max amount of subgroups there can be 805*61046927SAndroid Build Coastguard Worker inside a block. Non 0 indicates support for OpenCL subgroups including 806*61046927SAndroid Build Coastguard Worker implementing ``get_compute_state_subgroup_size`` if multiple subgroup sizes 807*61046927SAndroid Build Coastguard Worker are supported. 808*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_IMAGES_SUPPORTED``: Whether images are supported 809*61046927SAndroid Build Coastguard Worker non-zero means yes, zero means no. Value type: ``uint32_t`` 810*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_SUBGROUP_SIZES``: Ored power of two sizes of a basic execution 811*61046927SAndroid Build Coastguard Worker unit in threads. Also known as wavefront size, warp size or SIMD width. 812*61046927SAndroid Build Coastguard Worker E.g. ``64 | 32``. 813*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_ADDRESS_BITS``: The default compute device address space 814*61046927SAndroid Build Coastguard Worker size specified as an unsigned integer value in bits. 815*61046927SAndroid Build Coastguard Worker* ``PIPE_COMPUTE_CAP_MAX_VARIABLE_THREADS_PER_BLOCK``: Maximum variable number 816*61046927SAndroid Build Coastguard Worker of threads that a single block can contain. This is similar to 817*61046927SAndroid Build Coastguard Worker PIPE_COMPUTE_CAP_MAX_THREADS_PER_BLOCK, except that the variable size is not 818*61046927SAndroid Build Coastguard Worker known a compile-time but at dispatch-time. 819*61046927SAndroid Build Coastguard Worker 820*61046927SAndroid Build Coastguard Worker.. _pipe_bind: 821*61046927SAndroid Build Coastguard Worker 822*61046927SAndroid Build Coastguard WorkerPIPE_BIND_* 823*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^ 824*61046927SAndroid Build Coastguard Worker 825*61046927SAndroid Build Coastguard WorkerThese flags indicate how a resource will be used and are specified at resource 826*61046927SAndroid Build Coastguard Workercreation time. Resources may be used in different roles 827*61046927SAndroid Build Coastguard Workerduring their life cycle. Bind flags are cumulative and may be combined to create 828*61046927SAndroid Build Coastguard Workera resource which can be used for multiple things. 829*61046927SAndroid Build Coastguard WorkerDepending on the pipe driver's memory management and these bind flags, 830*61046927SAndroid Build Coastguard Workerresources might be created and handled quite differently. 831*61046927SAndroid Build Coastguard Worker 832*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_RENDER_TARGET``: A color buffer or pixel buffer which will be 833*61046927SAndroid Build Coastguard Worker rendered to. Any surface/resource attached to pipe_framebuffer_state::cbufs 834*61046927SAndroid Build Coastguard Worker must have this flag set. 835*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_DEPTH_STENCIL``: A depth (Z) buffer and/or stencil buffer. Any 836*61046927SAndroid Build Coastguard Worker depth/stencil surface/resource attached to pipe_framebuffer_state::zsbuf must 837*61046927SAndroid Build Coastguard Worker have this flag set. 838*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_BLENDABLE``: Used in conjunction with PIPE_BIND_RENDER_TARGET to 839*61046927SAndroid Build Coastguard Worker query whether a device supports blending for a given format. 840*61046927SAndroid Build Coastguard Worker If this flag is set, surface creation may fail if blending is not supported 841*61046927SAndroid Build Coastguard Worker for the specified format. If it is not set, a driver may choose to ignore 842*61046927SAndroid Build Coastguard Worker blending on surfaces with formats that would require emulation. 843*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_DISPLAY_TARGET``: A surface that can be presented to screen. Arguments to 844*61046927SAndroid Build Coastguard Worker pipe_screen::flush_front_buffer must have this flag set. 845*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_SAMPLER_VIEW``: A texture that may be sampled from in a fragment 846*61046927SAndroid Build Coastguard Worker or vertex shader. 847*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_VERTEX_BUFFER``: A vertex buffer. 848*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_INDEX_BUFFER``: An vertex index/element buffer. 849*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_CONSTANT_BUFFER``: A buffer of shader constants. 850*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_STREAM_OUTPUT``: A stream output buffer. 851*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_CUSTOM``: 852*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_SCANOUT``: A front color buffer or scanout buffer. 853*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_SHARED``: A shareable buffer that can be given to another 854*61046927SAndroid Build Coastguard Worker process. 855*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_GLOBAL``: A buffer that can be mapped into the global 856*61046927SAndroid Build Coastguard Worker address space of a compute program. 857*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_SHADER_BUFFER``: A buffer without a format that can be bound 858*61046927SAndroid Build Coastguard Worker to a shader and can be used with load, store, and atomic instructions. 859*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_SHADER_IMAGE``: A buffer or texture with a format that can be 860*61046927SAndroid Build Coastguard Worker bound to a shader and can be used with load, store, and atomic instructions. 861*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_COMPUTE_RESOURCE``: A buffer or texture that can be 862*61046927SAndroid Build Coastguard Worker bound to the compute program as a shader resource. 863*61046927SAndroid Build Coastguard Worker* ``PIPE_BIND_COMMAND_ARGS_BUFFER``: A buffer that may be sourced by the 864*61046927SAndroid Build Coastguard Worker GPU command processor. It can contain, for example, the arguments to 865*61046927SAndroid Build Coastguard Worker indirect draw calls. 866*61046927SAndroid Build Coastguard Worker 867*61046927SAndroid Build Coastguard Worker.. _pipe_usage: 868*61046927SAndroid Build Coastguard Worker 869*61046927SAndroid Build Coastguard WorkerPIPE_USAGE_* 870*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^ 871*61046927SAndroid Build Coastguard Worker 872*61046927SAndroid Build Coastguard WorkerThe PIPE_USAGE enums are hints about the expected usage pattern of a resource. 873*61046927SAndroid Build Coastguard WorkerNote that drivers must always support read and write CPU access at any time 874*61046927SAndroid Build Coastguard Workerno matter which hint they got. 875*61046927SAndroid Build Coastguard Worker 876*61046927SAndroid Build Coastguard Worker* ``PIPE_USAGE_DEFAULT``: Optimized for fast GPU access. 877*61046927SAndroid Build Coastguard Worker* ``PIPE_USAGE_IMMUTABLE``: Optimized for fast GPU access and the resource is 878*61046927SAndroid Build Coastguard Worker not expected to be mapped or changed (even by the GPU) after the first upload. 879*61046927SAndroid Build Coastguard Worker* ``PIPE_USAGE_DYNAMIC``: Expect frequent write-only CPU access. What is 880*61046927SAndroid Build Coastguard Worker uploaded is expected to be used at least several times by the GPU. 881*61046927SAndroid Build Coastguard Worker* ``PIPE_USAGE_STREAM``: Expect frequent write-only CPU access. What is 882*61046927SAndroid Build Coastguard Worker uploaded is expected to be used only once by the GPU. 883*61046927SAndroid Build Coastguard Worker* ``PIPE_USAGE_STAGING``: Optimized for fast CPU access. 884*61046927SAndroid Build Coastguard Worker 885*61046927SAndroid Build Coastguard Worker 886*61046927SAndroid Build Coastguard WorkerMethods 887*61046927SAndroid Build Coastguard Worker------- 888*61046927SAndroid Build Coastguard Worker 889*61046927SAndroid Build Coastguard WorkerXXX to-do 890*61046927SAndroid Build Coastguard Worker 891*61046927SAndroid Build Coastguard Workerget_name 892*61046927SAndroid Build Coastguard Worker^^^^^^^^ 893*61046927SAndroid Build Coastguard Worker 894*61046927SAndroid Build Coastguard WorkerReturns an identifying name for the screen. 895*61046927SAndroid Build Coastguard Worker 896*61046927SAndroid Build Coastguard WorkerThe returned string should remain valid and immutable for the lifetime of 897*61046927SAndroid Build Coastguard Workerpipe_screen. 898*61046927SAndroid Build Coastguard Worker 899*61046927SAndroid Build Coastguard Workerget_vendor 900*61046927SAndroid Build Coastguard Worker^^^^^^^^^^ 901*61046927SAndroid Build Coastguard Worker 902*61046927SAndroid Build Coastguard WorkerReturns the screen vendor. 903*61046927SAndroid Build Coastguard Worker 904*61046927SAndroid Build Coastguard WorkerThe returned string should remain valid and immutable for the lifetime of 905*61046927SAndroid Build Coastguard Workerpipe_screen. 906*61046927SAndroid Build Coastguard Worker 907*61046927SAndroid Build Coastguard Workerget_device_vendor 908*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^ 909*61046927SAndroid Build Coastguard Worker 910*61046927SAndroid Build Coastguard WorkerReturns the actual vendor of the device driving the screen 911*61046927SAndroid Build Coastguard Worker(as opposed to the driver vendor). 912*61046927SAndroid Build Coastguard Worker 913*61046927SAndroid Build Coastguard WorkerThe returned string should remain valid and immutable for the lifetime of 914*61046927SAndroid Build Coastguard Workerpipe_screen. 915*61046927SAndroid Build Coastguard Worker 916*61046927SAndroid Build Coastguard Worker.. _get_param: 917*61046927SAndroid Build Coastguard Worker 918*61046927SAndroid Build Coastguard Workerget_param 919*61046927SAndroid Build Coastguard Worker^^^^^^^^^ 920*61046927SAndroid Build Coastguard Worker 921*61046927SAndroid Build Coastguard WorkerGet an integer/boolean screen parameter. 922*61046927SAndroid Build Coastguard Worker 923*61046927SAndroid Build Coastguard Worker**param** is one of the :ref:`PIPE_CAP` names. 924*61046927SAndroid Build Coastguard Worker 925*61046927SAndroid Build Coastguard Worker.. _get_paramf: 926*61046927SAndroid Build Coastguard Worker 927*61046927SAndroid Build Coastguard Workerget_paramf 928*61046927SAndroid Build Coastguard Worker^^^^^^^^^^ 929*61046927SAndroid Build Coastguard Worker 930*61046927SAndroid Build Coastguard WorkerGet a floating-point screen parameter. 931*61046927SAndroid Build Coastguard Worker 932*61046927SAndroid Build Coastguard Worker**param** is one of the :ref:`PIPE_CAPF` names. 933*61046927SAndroid Build Coastguard Worker 934*61046927SAndroid Build Coastguard Workercontext_create 935*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^ 936*61046927SAndroid Build Coastguard Worker 937*61046927SAndroid Build Coastguard WorkerCreate a pipe_context. 938*61046927SAndroid Build Coastguard Worker 939*61046927SAndroid Build Coastguard Worker**priv** is private data of the caller, which may be put to various 940*61046927SAndroid Build Coastguard Workerunspecified uses, typically to do with implementing swapbuffers 941*61046927SAndroid Build Coastguard Workerand/or front-buffer rendering. 942*61046927SAndroid Build Coastguard Worker 943*61046927SAndroid Build Coastguard Workeris_format_supported 944*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^^^ 945*61046927SAndroid Build Coastguard Worker 946*61046927SAndroid Build Coastguard WorkerDetermine if a resource in the given format can be used in a specific manner. 947*61046927SAndroid Build Coastguard Worker 948*61046927SAndroid Build Coastguard Worker**format** the resource format 949*61046927SAndroid Build Coastguard Worker 950*61046927SAndroid Build Coastguard Worker**target** one of the PIPE_TEXTURE_x flags 951*61046927SAndroid Build Coastguard Worker 952*61046927SAndroid Build Coastguard Worker**sample_count** the number of samples. 0 and 1 mean no multisampling, 953*61046927SAndroid Build Coastguard Workerthe maximum allowed legal value is 32. 954*61046927SAndroid Build Coastguard Worker 955*61046927SAndroid Build Coastguard Worker**storage_sample_count** the number of storage samples. This must be <= 956*61046927SAndroid Build Coastguard Workersample_count. See the documentation of ``pipe_resource::nr_storage_samples``. 957*61046927SAndroid Build Coastguard Worker 958*61046927SAndroid Build Coastguard Worker**bindings** is a bitmask of :ref:`PIPE_BIND` flags. 959*61046927SAndroid Build Coastguard Worker 960*61046927SAndroid Build Coastguard WorkerReturns TRUE if all usages can be satisfied. 961*61046927SAndroid Build Coastguard Worker 962*61046927SAndroid Build Coastguard Worker 963*61046927SAndroid Build Coastguard Workercan_create_resource 964*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^^^ 965*61046927SAndroid Build Coastguard Worker 966*61046927SAndroid Build Coastguard WorkerCheck if a resource can actually be created (but don't actually allocate any 967*61046927SAndroid Build Coastguard Workermemory). This is used to implement OpenGL's proxy textures. Typically, a 968*61046927SAndroid Build Coastguard Workerdriver will simply check if the total size of the given resource is less than 969*61046927SAndroid Build Coastguard Workersome limit. 970*61046927SAndroid Build Coastguard Worker 971*61046927SAndroid Build Coastguard WorkerFor PIPE_TEXTURE_CUBE, the pipe_resource::array_size field should be 6. 972*61046927SAndroid Build Coastguard Worker 973*61046927SAndroid Build Coastguard Worker 974*61046927SAndroid Build Coastguard Worker.. _resource_create: 975*61046927SAndroid Build Coastguard Worker 976*61046927SAndroid Build Coastguard Workerresource_create 977*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^ 978*61046927SAndroid Build Coastguard Worker 979*61046927SAndroid Build Coastguard WorkerCreate a new resource from a template. 980*61046927SAndroid Build Coastguard WorkerThe following fields of the pipe_resource must be specified in the template: 981*61046927SAndroid Build Coastguard Worker 982*61046927SAndroid Build Coastguard Worker**target** one of the pipe_texture_target enums. 983*61046927SAndroid Build Coastguard WorkerNote that PIPE_BUFFER and PIPE_TEXTURE_X are not really fundamentally different. 984*61046927SAndroid Build Coastguard WorkerModern APIs allow using buffers as shader resources. 985*61046927SAndroid Build Coastguard Worker 986*61046927SAndroid Build Coastguard Worker**format** one of the pipe_format enums. 987*61046927SAndroid Build Coastguard Worker 988*61046927SAndroid Build Coastguard Worker**width0** the width of the base mip level of the texture or size of the buffer. 989*61046927SAndroid Build Coastguard Worker 990*61046927SAndroid Build Coastguard Worker**height0** the height of the base mip level of the texture 991*61046927SAndroid Build Coastguard Worker(1 for 1D or 1D array textures). 992*61046927SAndroid Build Coastguard Worker 993*61046927SAndroid Build Coastguard Worker**depth0** the depth of the base mip level of the texture 994*61046927SAndroid Build Coastguard Worker(1 for everything else). 995*61046927SAndroid Build Coastguard Worker 996*61046927SAndroid Build Coastguard Worker**array_size** the array size for 1D and 2D array textures. 997*61046927SAndroid Build Coastguard WorkerFor cube maps this must be 6, for other textures 1. 998*61046927SAndroid Build Coastguard Worker 999*61046927SAndroid Build Coastguard Worker**last_level** the last mip map level present. 1000*61046927SAndroid Build Coastguard Worker 1001*61046927SAndroid Build Coastguard Worker**nr_samples**: Number of samples determining quality, driving the rasterizer, 1002*61046927SAndroid Build Coastguard Workershading, and framebuffer. It is the number of samples seen by the whole 1003*61046927SAndroid Build Coastguard Workergraphics pipeline. 0 and 1 specify a resource which isn't multisampled. 1004*61046927SAndroid Build Coastguard Worker 1005*61046927SAndroid Build Coastguard Worker**nr_storage_samples**: Only color buffers can set this lower than nr_samples. 1006*61046927SAndroid Build Coastguard WorkerMultiple samples within a pixel can have the same color. ``nr_storage_samples`` 1007*61046927SAndroid Build Coastguard Workerdetermines how many slots for different colors there are per pixel. 1008*61046927SAndroid Build Coastguard WorkerIf there are not enough slots to store all sample colors, some samples will 1009*61046927SAndroid Build Coastguard Workerhave an undefined color (called "undefined samples"). 1010*61046927SAndroid Build Coastguard Worker 1011*61046927SAndroid Build Coastguard WorkerThe resolve blit behavior is driver-specific, but can be one of these two: 1012*61046927SAndroid Build Coastguard Worker 1013*61046927SAndroid Build Coastguard Worker1. Only defined samples will be averaged. Undefined samples will be ignored. 1014*61046927SAndroid Build Coastguard Worker2. Undefined samples will be approximated by looking at surrounding defined 1015*61046927SAndroid Build Coastguard Worker samples (even in different pixels). 1016*61046927SAndroid Build Coastguard Worker 1017*61046927SAndroid Build Coastguard WorkerBlits and MSAA texturing: If the sample being fetched is undefined, one of 1018*61046927SAndroid Build Coastguard Workerthe defined samples is returned instead. 1019*61046927SAndroid Build Coastguard Worker 1020*61046927SAndroid Build Coastguard WorkerSample shading (``set_min_samples``) will operate at a sample frequency that 1021*61046927SAndroid Build Coastguard Workeris at most ``nr_storage_samples``. Greater ``min_samples`` values will be 1022*61046927SAndroid Build Coastguard Workerreplaced by ``nr_storage_samples``. 1023*61046927SAndroid Build Coastguard Worker 1024*61046927SAndroid Build Coastguard Worker**usage** one of the :ref:`PIPE_USAGE` flags. 1025*61046927SAndroid Build Coastguard Worker 1026*61046927SAndroid Build Coastguard Worker**bind** bitmask of the :ref:`PIPE_BIND` flags. 1027*61046927SAndroid Build Coastguard Worker 1028*61046927SAndroid Build Coastguard Worker**flags** bitmask of PIPE_RESOURCE_FLAG flags. 1029*61046927SAndroid Build Coastguard Worker 1030*61046927SAndroid Build Coastguard Worker**next**: Pointer to the next plane for resources that consist of multiple 1031*61046927SAndroid Build Coastguard Workermemory planes. 1032*61046927SAndroid Build Coastguard Worker 1033*61046927SAndroid Build Coastguard WorkerAs a corollary, this mean resources for an image with multiple planes have 1034*61046927SAndroid Build Coastguard Workerto be created starting from the highest plane. 1035*61046927SAndroid Build Coastguard Worker 1036*61046927SAndroid Build Coastguard Workerresource_changed 1037*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^ 1038*61046927SAndroid Build Coastguard Worker 1039*61046927SAndroid Build Coastguard WorkerMark a resource as changed so derived internal resources will be recreated 1040*61046927SAndroid Build Coastguard Workeron next use. 1041*61046927SAndroid Build Coastguard Worker 1042*61046927SAndroid Build Coastguard WorkerWhen importing external images that can't be directly used as texture sampler 1043*61046927SAndroid Build Coastguard Workersource, internal copies may have to be created that the hardware can sample 1044*61046927SAndroid Build Coastguard Workerfrom. When those resources are reimported, the image data may have changed, and 1045*61046927SAndroid Build Coastguard Workerthe previously derived internal resources must be invalidated to avoid sampling 1046*61046927SAndroid Build Coastguard Workerfrom old copies. 1047*61046927SAndroid Build Coastguard Worker 1048*61046927SAndroid Build Coastguard Worker 1049*61046927SAndroid Build Coastguard Worker 1050*61046927SAndroid Build Coastguard Workerresource_destroy 1051*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^ 1052*61046927SAndroid Build Coastguard Worker 1053*61046927SAndroid Build Coastguard WorkerDestroy a resource. A resource is destroyed if it has no more references. 1054*61046927SAndroid Build Coastguard Worker 1055*61046927SAndroid Build Coastguard Worker 1056*61046927SAndroid Build Coastguard Worker 1057*61046927SAndroid Build Coastguard Workerget_timestamp 1058*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^ 1059*61046927SAndroid Build Coastguard Worker 1060*61046927SAndroid Build Coastguard WorkerQuery a timestamp in nanoseconds. The returned value should match 1061*61046927SAndroid Build Coastguard WorkerPIPE_QUERY_TIMESTAMP. This function returns immediately and doesn't 1062*61046927SAndroid Build Coastguard Workerwait for rendering to complete (which cannot be achieved with queries). 1063*61046927SAndroid Build Coastguard Worker 1064*61046927SAndroid Build Coastguard Worker 1065*61046927SAndroid Build Coastguard Worker 1066*61046927SAndroid Build Coastguard Workerget_driver_query_info 1067*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^^^^^ 1068*61046927SAndroid Build Coastguard Worker 1069*61046927SAndroid Build Coastguard WorkerReturn a driver-specific query. If the **info** parameter is NULL, 1070*61046927SAndroid Build Coastguard Workerthe number of available queries is returned. Otherwise, the driver 1071*61046927SAndroid Build Coastguard Workerquery at the specified **index** is returned in **info**. 1072*61046927SAndroid Build Coastguard WorkerThe function returns non-zero on success. 1073*61046927SAndroid Build Coastguard WorkerThe driver-specific query is described with the pipe_driver_query_info 1074*61046927SAndroid Build Coastguard Workerstructure. 1075*61046927SAndroid Build Coastguard Worker 1076*61046927SAndroid Build Coastguard Workerget_driver_query_group_info 1077*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1078*61046927SAndroid Build Coastguard Worker 1079*61046927SAndroid Build Coastguard WorkerReturn a driver-specific query group. If the **info** parameter is NULL, 1080*61046927SAndroid Build Coastguard Workerthe number of available groups is returned. Otherwise, the driver 1081*61046927SAndroid Build Coastguard Workerquery group at the specified **index** is returned in **info**. 1082*61046927SAndroid Build Coastguard WorkerThe function returns non-zero on success. 1083*61046927SAndroid Build Coastguard WorkerThe driver-specific query group is described with the 1084*61046927SAndroid Build Coastguard Workerpipe_driver_query_group_info structure. 1085*61046927SAndroid Build Coastguard Worker 1086*61046927SAndroid Build Coastguard Worker 1087*61046927SAndroid Build Coastguard Worker 1088*61046927SAndroid Build Coastguard Workerget_disk_shader_cache 1089*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^^^^^ 1090*61046927SAndroid Build Coastguard Worker 1091*61046927SAndroid Build Coastguard WorkerReturns a pointer to a driver-specific on-disk shader cache. If the driver 1092*61046927SAndroid Build Coastguard Workerfailed to create the cache or does not support an on-disk shader cache NULL is 1093*61046927SAndroid Build Coastguard Workerreturned. The callback itself may also be NULL if the driver doesn't support 1094*61046927SAndroid Build Coastguard Workeran on-disk shader cache. 1095*61046927SAndroid Build Coastguard Worker 1096*61046927SAndroid Build Coastguard Worker 1097*61046927SAndroid Build Coastguard Workeris_dmabuf_modifier_supported 1098*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1099*61046927SAndroid Build Coastguard Worker 1100*61046927SAndroid Build Coastguard WorkerQuery whether the driver supports a **modifier** in combination with a 1101*61046927SAndroid Build Coastguard Worker**format**, and whether it is only supported with "external" texture targets. 1102*61046927SAndroid Build Coastguard WorkerIf the combination is supported in any fashion, true is returned. If the 1103*61046927SAndroid Build Coastguard Worker**external_only** parameter is not NULL, the bool it points to is set to 1104*61046927SAndroid Build Coastguard Workerfalse if non-external texture targets are supported with the specified modifier+ 1105*61046927SAndroid Build Coastguard Workerformat, or true if only external texture targets are supported. 1106*61046927SAndroid Build Coastguard Worker 1107*61046927SAndroid Build Coastguard Worker 1108*61046927SAndroid Build Coastguard Workerget_dmabuf_modifier_planes 1109*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1110*61046927SAndroid Build Coastguard Worker 1111*61046927SAndroid Build Coastguard WorkerQuery the number of planes required by the image layout specified by the 1112*61046927SAndroid Build Coastguard Worker**modifier** and **format** parameters. The value returned includes both planes 1113*61046927SAndroid Build Coastguard Workerdictated by **format** and any additional planes required for driver-specific 1114*61046927SAndroid Build Coastguard Workerauxiliary data necessary for the layout defined by **modifier**. 1115*61046927SAndroid Build Coastguard WorkerIf the proc is NULL, no auxiliary planes are required for any layout supported by 1116*61046927SAndroid Build Coastguard Worker**screen** and the number of planes can be derived directly from **format**. 1117*61046927SAndroid Build Coastguard Worker 1118*61046927SAndroid Build Coastguard Worker 1119*61046927SAndroid Build Coastguard WorkerThread safety 1120*61046927SAndroid Build Coastguard Worker------------- 1121*61046927SAndroid Build Coastguard Worker 1122*61046927SAndroid Build Coastguard WorkerScreen methods are required to be thread safe. While gallium rendering 1123*61046927SAndroid Build Coastguard Workercontexts are not required to be thread safe, it is required to be safe to use 1124*61046927SAndroid Build Coastguard Workerdifferent contexts created with the same screen in different threads without 1125*61046927SAndroid Build Coastguard Workerlocks. It is also required to be safe using screen methods in a thread, while 1126*61046927SAndroid Build Coastguard Workerusing one of its contexts in another (without locks). 1127