struct spirv_supported_capabilities {
bool address;
bool atomic_storage;
+ bool derivative_group;
bool descriptor_array_dynamic_indexing;
+ bool descriptor_array_non_uniform_indexing;
+ bool descriptor_indexing;
bool device_group;
bool draw_parameters;
bool float64;
+ bool fragment_shader_sample_interlock;
+ bool fragment_shader_pixel_interlock;
bool geometry_streams;
- bool gcn_shader;
bool image_ms_array;
bool image_read_without_format;
bool image_write_without_format;
bool subgroup_vote;
bool tessellation;
bool transform_feedback;
- bool trinary_minmax;
bool variable_pointers;
+ bool float16;
+ bool amd_gcn_shader;
+ bool amd_shader_ballot;
+ bool amd_trinary_minmax;
};
typedef struct shader_info {
struct {
/* Which inputs are doubles */
uint64_t double_inputs;
+
+ /* True if the shader writes position in window space coordinates pre-transform */
+ bool window_space_position;
} vs;
struct {
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;
* Size of shared variables accessed by the compute shader.
*/
unsigned shared_size;
+
+
+ /**
+ * pointer size is:
+ * AddressingModelLogical: 0 (default)
+ * AddressingModelPhysical32: 32
+ * AddressingModelPhysical64: 64
+ */
+ unsigned ptr_size;
+
+ /*
+ * Arrangement of invocations used to calculate derivatives in a compute
+ * shader. From NV_compute_shader_derivatives.
+ */
+ enum gl_derivative_group derivative_group;
} cs;
/* Applies to both TCS and TES. */