diff --git a/src/gallium/drivers/zink/zink_program.h b/src/gallium/drivers/zink/zink_program.h index 6185e1b6225..760144787ef 100644 --- a/src/gallium/drivers/zink/zink_program.h +++ b/src/gallium/drivers/zink/zink_program.h @@ -31,6 +31,7 @@ #include "util/u_inlines.h" #include "zink_context.h" +#include "zink_shader_keys.h" struct zink_screen; struct zink_shader; @@ -48,23 +49,6 @@ struct zink_shader_module { VkShaderModule shader; }; -struct zink_fs_key { - unsigned shader_id; - //bool flat_shade; -}; - -/* a shader key is used for swapping out shader modules based on pipeline states, - * e.g., if sampleCount changes, we must verify that the fs doesn't need a recompile - * to account for GL ignoring gl_SampleMask in some cases when VK will not - * which allows us to avoid recompiling shaders when the pipeline state changes repeatedly - */ -struct zink_shader_key { - union { - struct zink_fs_key fs; - } key; - uint32_t size; -}; - /* the shader cache stores a mapping of zink_shader_key::VkShaderModule */ struct zink_shader_cache { struct pipe_reference reference; diff --git a/src/gallium/drivers/zink/zink_shader_keys.h b/src/gallium/drivers/zink/zink_shader_keys.h new file mode 100644 index 00000000000..0556f61ecbf --- /dev/null +++ b/src/gallium/drivers/zink/zink_shader_keys.h @@ -0,0 +1,53 @@ +/* + * Copyright 2020 Mike Blumenkrantz + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +/** this file exists for organization and to be included in nir_to_spirv/ without pulling in extra deps */ +#ifndef ZINK_SHADER_KEYS_H +# define ZINK_SHADER_KEYS_H + +struct zink_fs_key { + unsigned shader_id; + //bool flat_shade; +}; + +/* a shader key is used for swapping out shader modules based on pipeline states, + * e.g., if sampleCount changes, we must verify that the fs doesn't need a recompile + * to account for GL ignoring gl_SampleMask in some cases when VK will not + * which allows us to avoid recompiling shaders when the pipeline state changes repeatedly + */ +struct zink_shader_key { + union { + struct zink_fs_key fs; + } key; + uint32_t size; +}; + +static inline const struct zink_fs_key *zink_fs_key(const struct zink_shader_key *key) +{ + return &key->key.fs; +} + + + +#endif