nir: Replace fmin(b2f(a), b) with a bcsel
[mesa.git] / src / compiler / shader_info.h
index 38413940d678af17359ffe9a2af66c2f0e7f9271..e7fd7dbe62de2c63b0abc76d0d7373c744204fca 100644 (file)
 #define SHADER_INFO_H
 
 #include "shader_enums.h"
+#include <stdint.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+struct spirv_supported_capabilities {
+   bool float64;
+   bool image_ms_array;
+   bool tessellation;
+   bool draw_parameters;
+   bool image_read_without_format;
+   bool image_write_without_format;
+   bool int64;
+   bool multiview;
+   bool variable_pointers;
+   bool storage_16bit;
+};
+
 typedef struct shader_info {
    const char *name;
 
@@ -53,8 +67,6 @@ typedef struct shader_info {
 
    /* Which inputs are actually read */
    uint64_t inputs_read;
-   /* Which inputs are actually read and are double */
-   uint64_t double_inputs_read;
    /* Which outputs are actually written */
    uint64_t outputs_written;
    /* Which outputs are actually read */
@@ -66,10 +78,22 @@ typedef struct shader_info {
    uint32_t patch_inputs_read;
    /* Which patch outputs are actually written */
    uint32_t patch_outputs_written;
+   /* Which patch outputs are read */
+   uint32_t patch_outputs_read;
 
    /* Whether or not this shader ever uses textureGather() */
    bool uses_texture_gather;
 
+   /** Bitfield of which textures are used by texelFetch() */
+   uint32_t textures_used_by_txf;
+
+   /**
+    * True if this shader uses the fddx/fddy opcodes.
+    *
+    * Note that this does not include the "fine" and "coarse" variants.
+    */
+   bool uses_fddx_fddy;
+
    /* The size of the gl_ClipDistance[] array, if declared. */
    unsigned clip_distance_array_size;
 
@@ -83,6 +107,14 @@ typedef struct shader_info {
    bool has_transform_feedback_varyings;
 
    union {
+      struct {
+         /* Which inputs are doubles */
+         uint64_t double_inputs;
+
+         /* Which inputs are actually read and are double */
+         uint64_t double_inputs_read;
+      } vs;
+
       struct {
          /** The number of vertices recieves per input primitive */
          unsigned vertices_in;
@@ -127,6 +159,8 @@ typedef struct shader_info {
 
          bool post_depth_coverage;
 
+         bool pixel_center_integer;
+
          /** gl_FragDepth layout for ARB_conservative_depth. */
          enum gl_frag_depth_layout depth_layout;
       } fs;