X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdocs%2Fsource%2Fscreen.rst;h=bc0db429b38435d11d062dbca3a6585f71e7c08d;hb=ac0051a5075879970f12f614890c9c6d732663b6;hp=2bfcd9ff0ab87d0a17efb3dbd28b77c002410d32;hpb=6e40938fbc724856e3fe71b9686621c84baccba1;p=mesa.git diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst index 2bfcd9ff0ab..bc0db429b38 100644 --- a/src/gallium/docs/source/screen.rst +++ b/src/gallium/docs/source/screen.rst @@ -115,10 +115,6 @@ The integer capabilities: aligned to 4. If false, there are no restrictions on src_offset. * ``PIPE_CAP_COMPUTE``: Whether the implementation supports the compute entry points defined in pipe_context and pipe_screen. -* ``PIPE_CAP_USER_INDEX_BUFFERS``: Whether user index buffers are supported. - If not, the state tracker must upload all indices which are not in hw - resources. If user-space buffers are supported, the driver must also still - accept HW resource buffers. * ``PIPE_CAP_USER_CONSTANT_BUFFERS``: Whether user-space constant buffers are supported. If not, the state tracker must put constants into HW resources/buffers. If user-space constant buffers are supported, the @@ -221,7 +217,7 @@ The integer capabilities: pipe_draw_info::indirect_stride and ::indirect_count * ``PIPE_CAP_MULTI_DRAW_INDIRECT_PARAMS``: Whether the driver supports taking the number of indirect draws from a separate parameter - buffer, see pipe_draw_info::indirect_params. + buffer, see pipe_draw_indirect_info::indirect_draw_count. * ``PIPE_CAP_TGSI_FS_FINE_DERIVATIVE``: Whether the fragment shader supports the FINE versions of DDX/DDY. * ``PIPE_CAP_VENDOR_ID``: The vendor ID of the underlying hardware. If it's @@ -373,6 +369,48 @@ The integer capabilities: opcode to retrieve the current value in the framebuffer. * ``PIPE_CAP_TGSI_MUL_ZERO_WINS``: Whether TGSI shaders support the ``TGSI_PROPERTY_MUL_ZERO_WINS`` shader property. +* ``PIPE_CAP_DOUBLES``: Whether double precision floating-point operations + are supported. +* ``PIPE_CAP_INT64``: Whether 64-bit integer operations are supported. +* ``PIPE_CAP_INT64_DIVMOD``: Whether 64-bit integer division/modulo + operations are supported. +* ``PIPE_CAP_TGSI_TEX_TXF_LZ``: Whether TEX_LZ and TXF_LZ opcodes are + supported. +* ``PIPE_CAP_TGSI_CLOCK``: Whether the CLOCK opcode is supported. +* ``PIPE_CAP_POLYGON_MODE_FILL_RECTANGLE``: Whether the + PIPE_POLYGON_MODE_FILL_RECTANGLE mode is supported for + ``pipe_rasterizer_state::fill_front`` and + ``pipe_rasterizer_state::fill_back``. +* ``PIPE_CAP_SPARSE_BUFFER_PAGE_SIZE``: The page size of sparse buffers in + bytes, or 0 if sparse buffers are not supported. The page size must be at + most 64KB. +* ``PIPE_CAP_TGSI_BALLOT``: Whether the BALLOT and READ_* opcodes as well as + the SUBGROUP_* semantics are supported. +* ``PIPE_CAP_TGSI_TES_LAYER_VIEWPORT``: Whether ``TGSI_SEMANTIC_LAYER`` and + ``TGSI_SEMANTIC_VIEWPORT_INDEX`` are supported as tessellation evaluation + shader outputs. +* ``PIPE_CAP_CAN_BIND_CONST_BUFFER_AS_VERTEX``: Whether a buffer with just + PIPE_BIND_CONSTANT_BUFFER can be legally passed to set_vertex_buffers. +* ``PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION``: As the name says. +* ``PIPE_CAP_POST_DEPTH_COVERAGE``: whether + ``TGSI_PROPERTY_FS_POST_DEPTH_COVERAGE`` is supported. +* ``PIPE_CAP_BINDLESS_TEXTURE``: Whether bindless texture operations are + supported. +* ``PIPE_CAP_NIR_SAMPLERS_AS_DEREF``: Whether NIR tex instructions should + reference texture and sampler as NIR derefs instead of by indices. +* ``PIPE_CAP_QUERY_SO_OVERFLOW``: Whether the + ``PIPE_QUERY_SO_OVERFLOW_PREDICATE`` and + ``PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE`` query types are supported. Note that + for a driver that does not support multiple output streams (i.e., + ``PIPE_CAP_MAX_VERTEX_STREAMS`` is 1), both query types are identical. +* ``PIPE_CAP_MEMOBJ``: Whether operations on memory objects are supported. +* ``PIPE_CAP_LOAD_CONSTBUF``: True if the driver supports TGSI_OPCODE_LOAD use + with constant buffers. +* ``PIPE_CAP_TGSI_ANY_REG_AS_ADDRESS``: Any TGSI register can be used as + an address for indirect register indexing. +* ``PIPE_CAP_TILE_RASTER_ORDER``: Whether the driver supports + GL_MESA_tile_raster_order, using the tile_raster_order_* fields in + pipe_rasterizer_state. .. _pipe_capf: @@ -415,23 +453,17 @@ support different features. * ``PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE``: The maximum size per constant buffer in bytes. * ``PIPE_SHADER_CAP_MAX_CONST_BUFFERS``: Maximum number of constant buffers that can be bound to any shader stage using ``set_constant_buffer``. If 0 or 1, the pipe will - only permit binding one constant buffer per shader, and the shaders will - not permit two-dimensional access to constants. + only permit binding one constant buffer per shader. If a value greater than 0 is returned, the driver can have multiple -constant buffers bound to shader stages. The CONST register file can -be accessed with two-dimensional indices, like in the example below. +constant buffers bound to shader stages. The CONST register file is +accessed with two-dimensional indices, like in the example below. DCL CONST[0][0..7] # declare first 8 vectors of constbuf 0 DCL CONST[3][0] # declare first vector of constbuf 3 MOV OUT[0], CONST[0][3] # copy vector 3 of constbuf 0 -For backwards compatibility, one-dimensional access to CONST register -file is still supported. In that case, the constbuf index is assumed -to be 0. - * ``PIPE_SHADER_CAP_MAX_TEMPS``: The maximum number of temporary registers. -* ``PIPE_SHADER_CAP_MAX_PREDS``: The maximum number of predicate registers. * ``PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED``: Whether the continue opcode is supported. * ``PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR``: Whether indirect addressing of the input file is supported. @@ -445,18 +477,20 @@ to be 0. BGNSUB, ENDSUB, CAL, and RET, including RET in the main block. * ``PIPE_SHADER_CAP_INTEGERS``: Whether integer opcodes are supported. If unsupported, only float opcodes are supported. +* ``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. +* ``PIPE_SHADER_CAP_FP16``: Whether half precision floating-point opcodes are supported. + If unsupported, half precision ops need to be lowered to full precision. * ``PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS``: The maximum number of texture samplers. * ``PIPE_SHADER_CAP_PREFERRED_IR``: Preferred representation of the program. It should be one of the ``pipe_shader_ir`` enum values. * ``PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS``: The maximum number of texture sampler views. Must not be lower than PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS. -* ``PIPE_SHADER_CAP_DOUBLES``: Whether double precision floating-point - operations are supported. * ``PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED``: Whether double precision rounding is supported. If it is, DTRUNC/DCEIL/DFLR/DROUND opcodes may be used. * ``PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED``: Whether DFRACEXP and DLDEXP are supported. +* ``PIPE_SHADER_CAP_TGSI_LDEXP_SUPPORTED``: Whether LDEXP is supported. * ``PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED``: Whether FMA and DFMA (doubles only) are supported. * ``PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE``: Whether the driver doesn't @@ -476,6 +510,9 @@ to be 0. cost than this value should be lowered by the state tracker for better performance. This is a tunable for the GLSL compiler and the behavior is specific to the compiler. +* ``PIPE_SHADER_CAP_TGSI_SKIP_MERGE_REGISTERS``: Whether the merge registers + TGSI pass is skipped. This might reduce code size and register pressure if + the underlying driver has a real backend compiler. .. _pipe_compute_cap: @@ -603,17 +640,26 @@ get_name Returns an identifying name for the screen. +The returned string should remain valid and immutable for the lifetime of +pipe_screen. + get_vendor ^^^^^^^^^^ Returns the screen vendor. +The returned string should remain valid and immutable for the lifetime of +pipe_screen. + get_device_vendor ^^^^^^^^^^^^^^^^^ Returns the actual vendor of the device driving the screen (as opposed to the driver vendor). +The returned string should remain valid and immutable for the lifetime of +pipe_screen. + .. _get_param: get_param @@ -630,7 +676,7 @@ get_paramf Get a floating-point screen parameter. -**param** is one of the :ref:`PIPE_CAP` names. +**param** is one of the :ref:`PIPE_CAPF` names. context_create ^^^^^^^^^^^^^^ @@ -655,8 +701,6 @@ the maximum allowed legal value is 32. **bindings** is a bitmask of :ref:`PIPE_BIND` flags. -**geom_flags** is a bitmask of PIPE_TEXTURE_GEOM_x flags. - Returns TRUE if all usages can be satisfied. @@ -701,9 +745,9 @@ For cube maps this must be 6, for other textures 1. **nr_samples** the nr of msaa samples. 0 (or 1) specifies a resource which isn't multisampled. -**usage** one of the PIPE_USAGE flags. +**usage** one of the :ref:`PIPE_USAGE` flags. -**bind** bitmask of the PIPE_BIND flags. +**bind** bitmask of the :ref:`PIPE_BIND` flags. **flags** bitmask of PIPE_RESOURCE_FLAG flags. @@ -760,6 +804,16 @@ The driver-specific query group is described with the pipe_driver_query_group_info structure. + +get_disk_shader_cache +^^^^^^^^^^^^^^^^^^^^^ + +Returns a pointer to a driver-specific on-disk shader cache. If the driver +failed to create the cache or does not support an on-disk shader cache NULL is +returned. The callback itself may also be NULL if the driver doesn't support +an on-disk shader cache. + + Thread safety -------------