X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fcompiler%2Fshader_info.h;h=c49fed923e28427747312c51e6f5a15a579926c6;hb=de36b5b805be1732e6798afd1a12743df8d32718;hp=48a32f6f4ffbcaddc5398d3be2f5d2cd5cc87f73;hpb=f1dd81ae1047304a4cfb0861cb85c69a2ae776ec;p=mesa.git diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h index 48a32f6f4ff..c49fed923e2 100644 --- a/src/compiler/shader_info.h +++ b/src/compiler/shader_info.h @@ -42,7 +42,9 @@ struct spirv_supported_capabilities { bool descriptor_indexing; bool device_group; bool draw_parameters; + bool float32_atomic_add; bool float64; + bool float64_atomic_add; bool fragment_shader_sample_interlock; bool fragment_shader_pixel_interlock; bool geometry_streams; @@ -55,6 +57,7 @@ struct spirv_supported_capabilities { bool int64_atomics; bool integer_functions2; bool kernel; + bool kernel_image; bool min_lod; bool multiview; bool physical_storage_buffer_address; @@ -85,6 +88,7 @@ struct spirv_supported_capabilities { bool amd_trinary_minmax; bool amd_image_read_write_lod; bool amd_shader_explicit_vertex_parameter; + bool amd_image_gather_bias_lod; }; typedef struct shader_info { @@ -115,8 +119,6 @@ typedef struct shader_info { uint8_t num_ssbos; /* Number of images used by this shader */ uint8_t num_images; - /* Index of the last MSAA image. */ - int8_t last_msaa_image; /* Which inputs are actually read */ uint64_t inputs_read; @@ -151,6 +153,10 @@ typedef struct shader_info { /** Bitfield of which images are used */ uint32_t images_used; + /** Bitfield of which images are buffers. */ + uint32_t image_buffers; + /** Bitfield of which images are MSAA. */ + uint32_t msaa_images; /* SPV_KHR_float_controls: execution mode for floating point ops */ uint16_t float_controls_execution_mode; @@ -188,9 +194,17 @@ typedef struct shader_info { /* Whether flrp has been lowered. */ bool flrp_lowered:1; + /* Whether nir_lower_io has been called to lower derefs. + * nir_variables for inputs and outputs might not be present in the IR. + */ + bool io_lowered:1; + /* Whether the shader writes memory, including transform feedback. */ bool writes_memory:1; + /* Whether gl_Layer is viewport-relative */ + bool layer_viewport_relative:1; + union { struct { /* Which inputs are doubles */ @@ -226,8 +240,8 @@ typedef struct shader_info { /** Whether or not this shader uses EndPrimitive */ bool uses_end_primitive:1; - /** Whether or not this shader uses non-zero streams */ - bool uses_streams:1; + /** The streams used in this shaders (max. 4) */ + uint8_t active_stream_mask:4; } gs; struct { @@ -294,6 +308,17 @@ typedef struct shader_info { /** gl_FragDepth layout for ARB_conservative_depth. */ enum gl_frag_depth_layout depth_layout:3; + + /** + * Interpolation qualifiers for drivers that lowers color inputs + * to system values. + */ + unsigned color0_interp:3; /* glsl_interp_mode */ + bool color0_sample:1; + bool color0_centroid:1; + unsigned color1_interp:3; /* glsl_interp_mode */ + bool color1_sample:1; + bool color1_centroid:1; } fs; struct { @@ -330,6 +355,10 @@ typedef struct shader_info { uint8_t tcs_vertices_out; enum gl_tess_spacing spacing:2; + /** Is the vertex order counterclockwise? */ + bool ccw:1; + bool point_mode:1; + /* Bit mask of TCS per-vertex inputs (VS outputs) that are used * with a vertex index that is NOT the invocation id */ @@ -339,10 +368,6 @@ typedef struct shader_info { * with a vertex index that is NOT the invocation id */ uint64_t tcs_cross_invocation_outputs_read; - - /** Is the vertex order counterclockwise? */ - bool ccw:1; - bool point_mode:1; } tess; }; } shader_info;