summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/swr/swr_shader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/swr/swr_shader.h')
-rw-r--r--src/gallium/drivers/swr/swr_shader.h22
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);