iris: Delete genx->bound_vertex_buffers
[mesa.git] / src / compiler / shader_info.h
index dc47cd7656d95809085b0a0ef7d863250dc9c858..8fbdfab1a8e19325d1294175284da359d896b9d6 100644 (file)
@@ -33,6 +33,7 @@ extern "C" {
 #endif
 
 struct spirv_supported_capabilities {
+   bool address;
    bool atomic_storage;
    bool descriptor_array_dynamic_indexing;
    bool device_group;
@@ -43,11 +44,14 @@ struct spirv_supported_capabilities {
    bool image_ms_array;
    bool image_read_without_format;
    bool image_write_without_format;
+   bool int8;
    bool int16;
    bool int64;
    bool int64_atomics;
+   bool kernel;
    bool min_lod;
    bool multiview;
+   bool physical_storage_buffer_address;
    bool post_depth_coverage;
    bool runtime_descriptor_array;
    bool shader_viewport_index_layer;
@@ -111,6 +115,9 @@ typedef struct shader_info {
    /* Whether or not this shader ever uses textureGather() */
    bool uses_texture_gather;
 
+   /** Bitfield of which textures are used */
+   uint32_t textures_used;
+
    /** Bitfield of which textures are used by texelFetch() */
    uint32_t textures_used_by_txf;
 
@@ -121,6 +128,11 @@ typedef struct shader_info {
     */
    bool uses_fddx_fddy;
 
+   /**
+    * True if this shader uses 64-bit ALU operations
+    */
+   bool uses_64bit;
+
    /* The size of the gl_ClipDistance[] array, if declared. */
    unsigned clip_distance_array_size;
 
@@ -183,13 +195,38 @@ typedef struct shader_info {
 
          bool post_depth_coverage;
 
+         /**
+          * \name ARB_fragment_coord_conventions
+          * @{
+          */
          bool pixel_center_integer;
+         bool origin_upper_left;
+         /*@}*/
 
          bool pixel_interlock_ordered;
          bool pixel_interlock_unordered;
          bool sample_interlock_ordered;
          bool sample_interlock_unordered;
 
+         /**
+          * Flags whether NIR's base types on the FS color outputs should be
+          * ignored.
+          *
+          * GLSL requires that fragment shader output base types match the
+          * render target's base types for the behavior to be defined.  From
+          * the GL 4.6 spec:
+          *
+          *     "If the values written by the fragment shader do not match the
+          *      format(s) of the corresponding color buffer(s), the result is
+          *      undefined."
+          *
+          * However, for NIR shaders translated from TGSI, we don't have the
+          * output types any more, so the driver will need to do whatever
+          * fixups are necessary to handle effectively untyped data being
+          * output from the FS.
+          */
+         bool untyped_color_outputs;
+
          /** gl_FragDepth layout for ARB_conservative_depth. */
          enum gl_frag_depth_layout depth_layout;
       } fs;