X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fshader_info.h;h=b21db3e60f0aa9e4d47c11af0f96b9e057fd4452;hb=caeffe75492ef3bf8eaa5dae114ada626a9b7cbd;hp=c9140ba97520d7250afe35e520e4ac2e69c2d618;hpb=25e56b2ebafe2bcebb23819cc355e1b079a839d6;p=mesa.git diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h index c9140ba9752..b21db3e60f0 100644 --- a/src/compiler/shader_info.h +++ b/src/compiler/shader_info.h @@ -26,6 +26,7 @@ #define SHADER_INFO_H #include "shader_enums.h" +#include #ifdef __cplusplus extern "C" { @@ -35,13 +36,34 @@ struct spirv_supported_capabilities { bool float64; bool image_ms_array; bool tessellation; + bool device_group; bool draw_parameters; 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 { @@ -53,6 +75,11 @@ 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 */ @@ -66,8 +93,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 */ @@ -108,6 +133,11 @@ typedef struct shader_info { bool has_transform_feedback_varyings; union { + struct { + /* Which inputs are doubles */ + uint64_t double_inputs; + } vs; + struct { /** The number of vertices recieves per input primitive */ unsigned vertices_in; @@ -152,6 +182,13 @@ typedef struct shader_info { bool post_depth_coverage; + 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;