X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fcompiler%2Fspirv%2Fnir_spirv.h;h=dd7b5b36996eea3099861d638d1a34edd891e7f3;hb=1bdf8506384fce4c9dc13504e1b3272d1ddc1097;hp=1e9e0727b63bb8ff3d570be4a16c8e869ce57df5;hpb=31a7476335f911ae4fc95b77b6badc83bacacfb3;p=mesa.git diff --git a/src/compiler/spirv/nir_spirv.h b/src/compiler/spirv/nir_spirv.h index 1e9e0727b63..dd7b5b36996 100644 --- a/src/compiler/spirv/nir_spirv.h +++ b/src/compiler/spirv/nir_spirv.h @@ -37,10 +37,7 @@ extern "C" { struct nir_spirv_specialization { uint32_t id; - union { - uint32_t data32; - uint64_t data64; - }; + nir_const_value value; bool defined_on_module; }; @@ -59,17 +56,18 @@ enum nir_spirv_execution_environment { struct spirv_to_nir_options { enum nir_spirv_execution_environment environment; - /* Whether or not to lower all workgroup variable access to offsets - * up-front. This means you will _shared intrinsics instead of _var - * for workgroup data access. - * - * This is currently required for full variable pointers support. - */ - bool lower_workgroup_access_to_offsets; - /* Whether or not to lower all UBO/SSBO access to offsets up-front. */ bool lower_ubo_ssbo_access_to_offsets; + /* Whether to make FragCoord to a system value, the same as + * GLSLFragCoordIsSysVal in GLSL. + */ + bool frag_coord_is_sysval; + + /* Whether to keep ViewIndex as an input instead of rewriting to a sysval. + */ + bool view_index_is_input; + struct spirv_supported_capabilities caps; /* Address format for various kinds of pointers. */ @@ -80,6 +78,13 @@ struct spirv_to_nir_options { nir_address_format shared_addr_format; nir_address_format global_addr_format; nir_address_format temp_addr_format; + nir_address_format constant_addr_format; + + /* Whether UniformConstant memory should be treated as normal global memory. + * This is usefull for CL 2.0 implementations with fine grain system SVM + * support. + */ + bool constant_as_global; struct { void (*func)(void *private_data, @@ -94,12 +99,12 @@ bool gl_spirv_validation(const uint32_t *words, size_t word_count, struct nir_spirv_specialization *spec, unsigned num_spec, gl_shader_stage stage, const char *entry_point_name); -nir_function *spirv_to_nir(const uint32_t *words, size_t word_count, - struct nir_spirv_specialization *specializations, - unsigned num_specializations, - gl_shader_stage stage, const char *entry_point_name, - const struct spirv_to_nir_options *options, - const nir_shader_compiler_options *nir_options); +nir_shader *spirv_to_nir(const uint32_t *words, size_t word_count, + struct nir_spirv_specialization *specializations, + unsigned num_specializations, + gl_shader_stage stage, const char *entry_point_name, + const struct spirv_to_nir_options *options, + const nir_shader_compiler_options *nir_options); #ifdef __cplusplus }