bool image_read_without_format;
bool image_write_without_format;
bool int64;
+ bool min_lod;
bool multiview;
bool variable_pointers;
bool storage_16bit;
+ bool int16;
bool shader_viewport_index_layer;
+ bool subgroup_arithmetic;
bool subgroup_ballot;
bool subgroup_basic;
+ bool subgroup_quad;
bool subgroup_shuffle;
bool subgroup_vote;
+ bool gcn_shader;
+ bool trinary_minmax;
+ bool descriptor_array_dynamic_indexing;
+ bool runtime_descriptor_array;
+ bool stencil_export;
+ bool atomic_storage;
+ bool storage_8bit;
+ bool post_depth_coverage;
+ bool transform_feedback;
+ bool geometry_streams;
+ bool int64_atomics;
};
typedef struct shader_info {
/** The shader stage, such as MESA_SHADER_VERTEX. */
gl_shader_stage stage;
+ /** The shader stage in a non SSO linked program that follows this stage,
+ * such as MESA_SHADER_FRAGMENT.
+ */
+ gl_shader_stage next_stage;
+
/* Number of textures used by this shader */
unsigned num_textures;
/* Number of uniform buffers used by this shader */
struct {
/* Which inputs are doubles */
uint64_t double_inputs;
-
- /* Which inputs are actually read and are double */
- uint64_t double_inputs_read;
} vs;
struct {
bool pixel_center_integer;
+ bool pixel_interlock_ordered;
+ bool pixel_interlock_unordered;
+ bool sample_interlock_ordered;
+ bool sample_interlock_unordered;
+
/** gl_FragDepth layout for ARB_conservative_depth. */
enum gl_frag_depth_layout depth_layout;
} fs;