zink: add shader key for vs shaders
we're reusing these for tes/gs for now too Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8682>
This commit is contained in:
parent
079f348a5c
commit
03971d8ddc
|
@ -169,6 +169,17 @@ create_pipeline_layout(VkDevice dev, VkDescriptorSetLayout dsl)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
shader_key_vs_gen(struct zink_context *ctx, struct zink_shader *zs,
|
||||||
|
struct zink_shader *shaders[ZINK_SHADER_COUNT], struct zink_shader_key *key)
|
||||||
|
{
|
||||||
|
struct zink_vs_key *vs_key = &key->key.vs;
|
||||||
|
key->size = sizeof(struct zink_vs_key);
|
||||||
|
|
||||||
|
vs_key->shader_id = zs->shader_id;
|
||||||
|
vs_key->clip_halfz = ctx->rast_state->base.clip_halfz;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shader_key_fs_gen(struct zink_context *ctx, struct zink_shader *zs,
|
shader_key_fs_gen(struct zink_context *ctx, struct zink_shader *zs,
|
||||||
struct zink_shader *shaders[ZINK_SHADER_COUNT], struct zink_shader_key *key)
|
struct zink_shader *shaders[ZINK_SHADER_COUNT], struct zink_shader_key *key)
|
||||||
|
@ -199,25 +210,16 @@ shader_key_tcs_gen(struct zink_context *ctx, struct zink_shader *zs,
|
||||||
tcs_key->vs_outputs_written = shaders[PIPE_SHADER_VERTEX]->nir->info.outputs_written;
|
tcs_key->vs_outputs_written = shaders[PIPE_SHADER_VERTEX]->nir->info.outputs_written;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
shader_key_dummy_gen(struct zink_context *ctx, struct zink_shader *zs,
|
|
||||||
struct zink_shader *shaders[ZINK_SHADER_COUNT], struct zink_shader_key *key)
|
|
||||||
{
|
|
||||||
struct zink_fs_key *fs_key = &key->key.fs;
|
|
||||||
key->size = sizeof(uint32_t);
|
|
||||||
|
|
||||||
fs_key->shader_id = zs->shader_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef void (*zink_shader_key_gen)(struct zink_context *ctx, struct zink_shader *zs,
|
typedef void (*zink_shader_key_gen)(struct zink_context *ctx, struct zink_shader *zs,
|
||||||
struct zink_shader *shaders[ZINK_SHADER_COUNT],
|
struct zink_shader *shaders[ZINK_SHADER_COUNT],
|
||||||
struct zink_shader_key *key);
|
struct zink_shader_key *key);
|
||||||
static zink_shader_key_gen shader_key_vtbl[] =
|
static zink_shader_key_gen shader_key_vtbl[] =
|
||||||
{
|
{
|
||||||
[MESA_SHADER_VERTEX] = shader_key_dummy_gen,
|
[MESA_SHADER_VERTEX] = shader_key_vs_gen,
|
||||||
[MESA_SHADER_TESS_CTRL] = shader_key_tcs_gen,
|
[MESA_SHADER_TESS_CTRL] = shader_key_tcs_gen,
|
||||||
[MESA_SHADER_TESS_EVAL] = shader_key_dummy_gen,
|
/* reusing vs key for now since we're only using clip_halfz */
|
||||||
[MESA_SHADER_GEOMETRY] = shader_key_dummy_gen,
|
[MESA_SHADER_TESS_EVAL] = shader_key_vs_gen,
|
||||||
|
[MESA_SHADER_GEOMETRY] = shader_key_vs_gen,
|
||||||
[MESA_SHADER_FRAGMENT] = shader_key_fs_gen,
|
[MESA_SHADER_FRAGMENT] = shader_key_fs_gen,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,11 @@
|
||||||
#ifndef ZINK_SHADER_KEYS_H
|
#ifndef ZINK_SHADER_KEYS_H
|
||||||
# define ZINK_SHADER_KEYS_H
|
# define ZINK_SHADER_KEYS_H
|
||||||
|
|
||||||
|
struct zink_vs_key {
|
||||||
|
unsigned shader_id;
|
||||||
|
bool clip_halfz;
|
||||||
|
};
|
||||||
|
|
||||||
struct zink_fs_key {
|
struct zink_fs_key {
|
||||||
unsigned shader_id;
|
unsigned shader_id;
|
||||||
//bool flat_shade;
|
//bool flat_shade;
|
||||||
|
@ -45,6 +50,8 @@ struct zink_tcs_key {
|
||||||
*/
|
*/
|
||||||
struct zink_shader_key {
|
struct zink_shader_key {
|
||||||
union {
|
union {
|
||||||
|
/* reuse vs key for now with tes/gs since we only use clip_halfz */
|
||||||
|
struct zink_vs_key vs;
|
||||||
struct zink_fs_key fs;
|
struct zink_fs_key fs;
|
||||||
struct zink_tcs_key tcs;
|
struct zink_tcs_key tcs;
|
||||||
} key;
|
} key;
|
||||||
|
@ -57,6 +64,12 @@ zink_fs_key(const struct zink_shader_key *key)
|
||||||
return &key->key.fs;
|
return &key->key.fs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline const struct zink_vs_key *
|
||||||
|
zink_vs_key(const struct zink_shader_key *key)
|
||||||
|
{
|
||||||
|
return &key->key.vs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue