diff options
Diffstat (limited to 'src/gallium/drivers/swr/swr_shader.h')
-rw-r--r-- | src/gallium/drivers/swr/swr_shader.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/gallium/drivers/swr/swr_shader.h b/src/gallium/drivers/swr/swr_shader.h index 266573f7eaf..c9df5b00917 100644 --- a/src/gallium/drivers/swr/swr_shader.h +++ b/src/gallium/drivers/swr/swr_shader.h @@ -25,8 +25,10 @@ struct swr_vertex_shader; struct swr_fragment_shader; +struct swr_geometry_shader; struct swr_jit_fs_key; struct swr_jit_vs_key; +struct swr_jit_gs_key; PFN_VERTEX_FUNC swr_compile_vs(struct swr_context *ctx, swr_jit_vs_key &key); @@ -34,6 +36,9 @@ swr_compile_vs(struct swr_context *ctx, swr_jit_vs_key &key); PFN_PIXEL_KERNEL swr_compile_fs(struct swr_context *ctx, swr_jit_fs_key &key); +PFN_GS_FUNC +swr_compile_gs(struct swr_context *ctx, swr_jit_gs_key &key); + void swr_generate_fs_key(struct swr_jit_fs_key &key, struct swr_context *ctx, swr_fragment_shader *swr_fs); @@ -45,6 +50,10 @@ void swr_generate_vs_key(struct swr_jit_vs_key &key, void swr_generate_fetch_key(struct swr_jit_fetch_key &key, struct swr_vertex_element_state *velems); +void swr_generate_gs_key(struct swr_jit_gs_key &key, + struct swr_context *ctx, + swr_geometry_shader *swr_gs); + struct swr_jit_sampler_key { unsigned nr_samplers; unsigned nr_sampler_views; @@ -67,6 +76,11 @@ struct swr_jit_fetch_key { FETCH_COMPILE_STATE fsState; }; +struct swr_jit_gs_key : swr_jit_sampler_key { + ubyte vs_output_semantic_name[PIPE_MAX_SHADER_OUTPUTS]; + ubyte vs_output_semantic_idx[PIPE_MAX_SHADER_OUTPUTS]; +}; + namespace std { template <> struct hash<swr_jit_fs_key> { @@ -89,8 +103,16 @@ template <> struct hash<swr_jit_fetch_key> { return util_hash_crc32(&k, sizeof(k)); } }; + +template <> struct hash<swr_jit_gs_key> { + std::size_t operator()(const swr_jit_gs_key &k) const + { + return util_hash_crc32(&k, sizeof(k)); + } +}; }; bool operator==(const swr_jit_fs_key &lhs, const swr_jit_fs_key &rhs); bool operator==(const swr_jit_vs_key &lhs, const swr_jit_vs_key &rhs); bool operator==(const swr_jit_fetch_key &lhs, const swr_jit_fetch_key &rhs); +bool operator==(const swr_jit_gs_key &lhs, const swr_jit_gs_key &rhs); |