summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2013-06-20 11:52:03 +0800
committerChia-I Wu <[email protected]>2013-06-25 11:51:26 +0800
commit4d789c76dce580d754fe146041d7a1118524a4ff (patch)
tree1dfb91a20b86170042dd37a2172c9a554f5912d7
parente3cbb18321b530ab01f57f21b22d38b89efcaec4 (diff)
ilo: move internal shader interface to a new header
Move it to ilo_shader_internal.h. The goal is to make files not part of the compiler include only ilo_shader.h eventually.
-rw-r--r--src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c1
-rw-r--r--src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c1
-rw-r--r--src/gallium/drivers/ilo/ilo_gpe_gen6.c1
-rw-r--r--src/gallium/drivers/ilo/ilo_gpe_gen6.h1
-rw-r--r--src/gallium/drivers/ilo/ilo_gpe_gen7.c1
-rw-r--r--src/gallium/drivers/ilo/ilo_shader.c1
-rw-r--r--src/gallium/drivers/ilo/ilo_shader.h182
-rw-r--r--src/gallium/drivers/ilo/ilo_state.c1
-rw-r--r--src/gallium/drivers/ilo/shader/ilo_shader_cs.c2
-rw-r--r--src/gallium/drivers/ilo/shader/ilo_shader_fs.c2
-rw-r--r--src/gallium/drivers/ilo/shader/ilo_shader_gs.c2
-rw-r--r--src/gallium/drivers/ilo/shader/ilo_shader_internal.h212
-rw-r--r--src/gallium/drivers/ilo/shader/ilo_shader_vs.c2
13 files changed, 226 insertions, 183 deletions
diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c
index 1f855dc34d0..228131c2612 100644
--- a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c
+++ b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen6.c
@@ -29,6 +29,7 @@
#include "util/u_prim.h"
#include "intel_reg.h"
+#include "shader/ilo_shader_internal.h"
#include "ilo_3d.h"
#include "ilo_context.h"
#include "ilo_cp.h"
diff --git a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c
index 1c7260f7fd1..ed88f465d86 100644
--- a/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c
+++ b/src/gallium/drivers/ilo/ilo_3d_pipeline_gen7.c
@@ -28,6 +28,7 @@
#include "util/u_dual_blend.h"
#include "intel_reg.h"
+#include "shader/ilo_shader_internal.h"
#include "ilo_common.h"
#include "ilo_context.h"
#include "ilo_cp.h"
diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen6.c b/src/gallium/drivers/ilo/ilo_gpe_gen6.c
index 56db7da8ee3..5a18fead0f3 100644
--- a/src/gallium/drivers/ilo/ilo_gpe_gen6.c
+++ b/src/gallium/drivers/ilo/ilo_gpe_gen6.c
@@ -30,6 +30,7 @@
#include "brw_defines.h"
#include "intel_reg.h"
+#include "shader/ilo_shader_internal.h"
#include "ilo_context.h"
#include "ilo_cp.h"
#include "ilo_format.h"
diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen6.h b/src/gallium/drivers/ilo/ilo_gpe_gen6.h
index 6e273645471..5f2b85aebb3 100644
--- a/src/gallium/drivers/ilo/ilo_gpe_gen6.h
+++ b/src/gallium/drivers/ilo/ilo_gpe_gen6.h
@@ -29,6 +29,7 @@
#define ILO_GPE_GEN6_H
#include "ilo_common.h"
+#include "ilo_gpe.h"
#define ILO_GPE_VALID_GEN(dev, min_gen, max_gen) \
assert((dev)->gen >= ILO_GEN(min_gen) && (dev)->gen <= ILO_GEN(max_gen))
diff --git a/src/gallium/drivers/ilo/ilo_gpe_gen7.c b/src/gallium/drivers/ilo/ilo_gpe_gen7.c
index c3211b53873..74ba793dea1 100644
--- a/src/gallium/drivers/ilo/ilo_gpe_gen7.c
+++ b/src/gallium/drivers/ilo/ilo_gpe_gen7.c
@@ -29,6 +29,7 @@
#include "brw_defines.h"
#include "intel_reg.h"
+#include "shader/ilo_shader_internal.h"
#include "ilo_cp.h"
#include "ilo_format.h"
#include "ilo_resource.h"
diff --git a/src/gallium/drivers/ilo/ilo_shader.c b/src/gallium/drivers/ilo/ilo_shader.c
index 584e1301f35..765cc037806 100644
--- a/src/gallium/drivers/ilo/ilo_shader.c
+++ b/src/gallium/drivers/ilo/ilo_shader.c
@@ -28,6 +28,7 @@
#include "tgsi/tgsi_parse.h"
#include "intel_winsys.h"
+#include "shader/ilo_shader_internal.h"
#include "ilo_shader.h"
struct ilo_shader_cache {
diff --git a/src/gallium/drivers/ilo/ilo_shader.h b/src/gallium/drivers/ilo/ilo_shader.h
index 9318785adbd..f286a9f785f 100644
--- a/src/gallium/drivers/ilo/ilo_shader.h
+++ b/src/gallium/drivers/ilo/ilo_shader.h
@@ -29,145 +29,11 @@
#define ILO_SHADER_H
#include "ilo_common.h"
-#include "ilo_context.h"
+struct intel_bo;
+struct ilo_context;
struct ilo_shader_cache;
-
-/* XXX The interface needs to be reworked */
-
-/**
- * A shader variant. It consists of non-orthogonal states of the pipe context
- * affecting the compilation of a shader.
- */
-struct ilo_shader_variant {
- union {
- struct {
- bool rasterizer_discard;
- int num_ucps;
- } vs;
-
- struct {
- bool rasterizer_discard;
- int num_inputs;
- int semantic_names[PIPE_MAX_SHADER_INPUTS];
- int semantic_indices[PIPE_MAX_SHADER_INPUTS];
- } gs;
-
- struct {
- bool flatshade;
- int fb_height;
- int num_cbufs;
- } fs;
- } u;
-
- int num_sampler_views;
- struct {
- unsigned r:3;
- unsigned g:3;
- unsigned b:3;
- unsigned a:3;
- } sampler_view_swizzles[ILO_MAX_SAMPLER_VIEWS];
-
- uint32_t saturate_tex_coords[3];
-};
-
-/**
- * A compiled shader.
- */
-struct ilo_shader {
- struct ilo_shader_variant variant;
-
- struct {
- int semantic_names[PIPE_MAX_SHADER_INPUTS];
- int semantic_indices[PIPE_MAX_SHADER_INPUTS];
- int interp[PIPE_MAX_SHADER_INPUTS];
- bool centroid[PIPE_MAX_SHADER_INPUTS];
- int count;
-
- int start_grf;
- bool has_pos;
- bool has_linear_interp;
- int barycentric_interpolation_mode;
- bool discard_adj;
- } in;
-
- struct {
- int register_indices[PIPE_MAX_SHADER_OUTPUTS];
- int semantic_names[PIPE_MAX_SHADER_OUTPUTS];
- int semantic_indices[PIPE_MAX_SHADER_OUTPUTS];
- int count;
-
- bool has_pos;
- } out;
-
- bool has_kill;
- bool dispatch_16;
-
- bool stream_output;
- int svbi_post_inc;
- /* for VS stream output / rasterizer discard */
- int gs_offsets[3];
- int gs_start_grf;
-
- void *kernel;
- int kernel_size;
-
- /* what does the push constant buffer consist of? */
- struct {
- int clip_state_size;
- } pcb;
-
- struct list_head list;
-
- /* managed by shader cache */
- bool uploaded;
- uint32_t cache_offset;
-};
-
-/**
- * Information about a shader state.
- */
-struct ilo_shader_info {
- const struct ilo_dev_info *dev;
- int type;
-
- const struct tgsi_token *tokens;
-
- struct pipe_stream_output_info stream_output;
- struct {
- unsigned req_local_mem;
- unsigned req_private_mem;
- unsigned req_input_mem;
- } compute;
-
- bool has_color_interp;
- bool has_pos;
- bool has_vertexid;
- bool has_instanceid;
- bool fs_color0_writes_all_cbufs;
-
- int edgeflag_in;
- int edgeflag_out;
-
- uint32_t shadow_samplers;
- int num_samplers;
-};
-
-/**
- * A shader state.
- */
-struct ilo_shader_state {
- struct ilo_shader_info info;
-
- struct list_head variants;
- int num_variants, total_size;
-
- struct ilo_shader *shader;
-
- /* managed by shader cache */
- struct ilo_shader_cache *cache;
- struct list_head list;
-};
+struct ilo_shader_state;
struct ilo_shader_cache *
ilo_shader_cache_create(void);
@@ -188,11 +54,6 @@ ilo_shader_cache_upload(struct ilo_shader_cache *shc,
struct intel_bo *bo, unsigned offset,
bool incremental);
-void
-ilo_shader_variant_init(struct ilo_shader_variant *variant,
- const struct ilo_shader_info *info,
- const struct ilo_context *ilo);
-
struct ilo_shader_state *
ilo_shader_state_create(const struct ilo_context *ilo,
int type, const void *templ);
@@ -200,41 +61,4 @@ ilo_shader_state_create(const struct ilo_context *ilo,
void
ilo_shader_state_destroy(struct ilo_shader_state *state);
-struct ilo_shader *
-ilo_shader_state_add_variant(struct ilo_shader_state *state,
- const struct ilo_shader_variant *variant);
-
-bool
-ilo_shader_state_use_variant(struct ilo_shader_state *state,
- const struct ilo_shader_variant *variant);
-
-struct ilo_shader *
-ilo_shader_compile_vs(const struct ilo_shader_state *state,
- const struct ilo_shader_variant *variant);
-
-struct ilo_shader *
-ilo_shader_compile_gs(const struct ilo_shader_state *state,
- const struct ilo_shader_variant *variant);
-
-bool
-ilo_shader_compile_gs_passthrough(const struct ilo_shader_state *vs_state,
- const struct ilo_shader_variant *vs_variant,
- const int *so_mapping,
- struct ilo_shader *vs);
-
-struct ilo_shader *
-ilo_shader_compile_fs(const struct ilo_shader_state *state,
- const struct ilo_shader_variant *variant);
-
-struct ilo_shader *
-ilo_shader_compile_cs(const struct ilo_shader_state *state,
- const struct ilo_shader_variant *variant);
-
-static inline void
-ilo_shader_destroy(struct ilo_shader *sh)
-{
- FREE(sh->kernel);
- FREE(sh);
-}
-
#endif /* ILO_SHADER_H */
diff --git a/src/gallium/drivers/ilo/ilo_state.c b/src/gallium/drivers/ilo/ilo_state.c
index b284e7c112b..80fa7414e82 100644
--- a/src/gallium/drivers/ilo/ilo_state.c
+++ b/src/gallium/drivers/ilo/ilo_state.c
@@ -28,6 +28,7 @@
#include "util/u_framebuffer.h"
#include "util/u_helpers.h"
+#include "shader/ilo_shader_internal.h"
#include "ilo_context.h"
#include "ilo_resource.h"
#include "ilo_shader.h"
diff --git a/src/gallium/drivers/ilo/shader/ilo_shader_cs.c b/src/gallium/drivers/ilo/shader/ilo_shader_cs.c
index 85182f2a1b7..880ec57ae41 100644
--- a/src/gallium/drivers/ilo/shader/ilo_shader_cs.c
+++ b/src/gallium/drivers/ilo/shader/ilo_shader_cs.c
@@ -25,7 +25,7 @@
* Chia-I Wu <[email protected]>
*/
-#include "ilo_shader.h"
+#include "ilo_shader_internal.h"
/**
* Compile the compute shader.
diff --git a/src/gallium/drivers/ilo/shader/ilo_shader_fs.c b/src/gallium/drivers/ilo/shader/ilo_shader_fs.c
index b414b50365c..eca118aa2a1 100644
--- a/src/gallium/drivers/ilo/shader/ilo_shader_fs.c
+++ b/src/gallium/drivers/ilo/shader/ilo_shader_fs.c
@@ -33,7 +33,7 @@
#include "toy_optimize.h"
#include "toy_helpers.h"
#include "ilo_context.h"
-#include "ilo_shader.h"
+#include "ilo_shader_internal.h"
struct fs_compile_context {
struct ilo_shader *shader;
diff --git a/src/gallium/drivers/ilo/shader/ilo_shader_gs.c b/src/gallium/drivers/ilo/shader/ilo_shader_gs.c
index caa0b17b9c7..c4266f41b0c 100644
--- a/src/gallium/drivers/ilo/shader/ilo_shader_gs.c
+++ b/src/gallium/drivers/ilo/shader/ilo_shader_gs.c
@@ -31,7 +31,7 @@
#include "toy_legalize.h"
#include "toy_optimize.h"
#include "toy_helpers.h"
-#include "ilo_shader.h"
+#include "ilo_shader_internal.h"
/* XXX Below is proof-of-concept code. Skip this file! */
diff --git a/src/gallium/drivers/ilo/shader/ilo_shader_internal.h b/src/gallium/drivers/ilo/shader/ilo_shader_internal.h
new file mode 100644
index 00000000000..c444e564dab
--- /dev/null
+++ b/src/gallium/drivers/ilo/shader/ilo_shader_internal.h
@@ -0,0 +1,212 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 2012-2013 LunarG, Inc.
+ *
+ * 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
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * 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 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 NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <[email protected]>
+ */
+
+#ifndef ILO_SHADER_INTERNAL_H
+#define ILO_SHADER_INTERNAL_H
+
+#include "ilo_common.h"
+#include "ilo_context.h"
+
+/* XXX The interface needs to be reworked */
+
+/**
+ * A shader variant. It consists of non-orthogonal states of the pipe context
+ * affecting the compilation of a shader.
+ */
+struct ilo_shader_variant {
+ union {
+ struct {
+ bool rasterizer_discard;
+ int num_ucps;
+ } vs;
+
+ struct {
+ bool rasterizer_discard;
+ int num_inputs;
+ int semantic_names[PIPE_MAX_SHADER_INPUTS];
+ int semantic_indices[PIPE_MAX_SHADER_INPUTS];
+ } gs;
+
+ struct {
+ bool flatshade;
+ int fb_height;
+ int num_cbufs;
+ } fs;
+ } u;
+
+ int num_sampler_views;
+ struct {
+ unsigned r:3;
+ unsigned g:3;
+ unsigned b:3;
+ unsigned a:3;
+ } sampler_view_swizzles[ILO_MAX_SAMPLER_VIEWS];
+
+ uint32_t saturate_tex_coords[3];
+};
+
+/**
+ * A compiled shader.
+ */
+struct ilo_shader {
+ struct ilo_shader_variant variant;
+
+ struct {
+ int semantic_names[PIPE_MAX_SHADER_INPUTS];
+ int semantic_indices[PIPE_MAX_SHADER_INPUTS];
+ int interp[PIPE_MAX_SHADER_INPUTS];
+ bool centroid[PIPE_MAX_SHADER_INPUTS];
+ int count;
+
+ int start_grf;
+ bool has_pos;
+ bool has_linear_interp;
+ int barycentric_interpolation_mode;
+ bool discard_adj;
+ } in;
+
+ struct {
+ int register_indices[PIPE_MAX_SHADER_OUTPUTS];
+ int semantic_names[PIPE_MAX_SHADER_OUTPUTS];
+ int semantic_indices[PIPE_MAX_SHADER_OUTPUTS];
+ int count;
+
+ bool has_pos;
+ } out;
+
+ bool has_kill;
+ bool dispatch_16;
+
+ bool stream_output;
+ int svbi_post_inc;
+ /* for VS stream output / rasterizer discard */
+ int gs_offsets[3];
+ int gs_start_grf;
+
+ void *kernel;
+ int kernel_size;
+
+ /* what does the push constant buffer consist of? */
+ struct {
+ int clip_state_size;
+ } pcb;
+
+ struct list_head list;
+
+ /* managed by shader cache */
+ bool uploaded;
+ uint32_t cache_offset;
+};
+
+/**
+ * Information about a shader state.
+ */
+struct ilo_shader_info {
+ const struct ilo_dev_info *dev;
+ int type;
+
+ const struct tgsi_token *tokens;
+
+ struct pipe_stream_output_info stream_output;
+ struct {
+ unsigned req_local_mem;
+ unsigned req_private_mem;
+ unsigned req_input_mem;
+ } compute;
+
+ bool has_color_interp;
+ bool has_pos;
+ bool has_vertexid;
+ bool has_instanceid;
+ bool fs_color0_writes_all_cbufs;
+
+ int edgeflag_in;
+ int edgeflag_out;
+
+ uint32_t shadow_samplers;
+ int num_samplers;
+};
+
+/**
+ * A shader state.
+ */
+struct ilo_shader_state {
+ struct ilo_shader_info info;
+
+ struct list_head variants;
+ int num_variants, total_size;
+
+ struct ilo_shader *shader;
+
+ /* managed by shader cache */
+ struct ilo_shader_cache *cache;
+ struct list_head list;
+};
+
+void
+ilo_shader_variant_init(struct ilo_shader_variant *variant,
+ const struct ilo_shader_info *info,
+ const struct ilo_context *ilo);
+
+struct ilo_shader *
+ilo_shader_state_add_variant(struct ilo_shader_state *state,
+ const struct ilo_shader_variant *variant);
+
+bool
+ilo_shader_state_use_variant(struct ilo_shader_state *state,
+ const struct ilo_shader_variant *variant);
+
+struct ilo_shader *
+ilo_shader_compile_vs(const struct ilo_shader_state *state,
+ const struct ilo_shader_variant *variant);
+
+struct ilo_shader *
+ilo_shader_compile_gs(const struct ilo_shader_state *state,
+ const struct ilo_shader_variant *variant);
+
+bool
+ilo_shader_compile_gs_passthrough(const struct ilo_shader_state *vs_state,
+ const struct ilo_shader_variant *vs_variant,
+ const int *so_mapping,
+ struct ilo_shader *vs);
+
+struct ilo_shader *
+ilo_shader_compile_fs(const struct ilo_shader_state *state,
+ const struct ilo_shader_variant *variant);
+
+struct ilo_shader *
+ilo_shader_compile_cs(const struct ilo_shader_state *state,
+ const struct ilo_shader_variant *variant);
+
+static inline void
+ilo_shader_destroy(struct ilo_shader *sh)
+{
+ FREE(sh->kernel);
+ FREE(sh);
+}
+
+#endif /* ILO_SHADER_INTERNAL_H */
diff --git a/src/gallium/drivers/ilo/shader/ilo_shader_vs.c b/src/gallium/drivers/ilo/shader/ilo_shader_vs.c
index 3563d0b9114..fcb9cb53e55 100644
--- a/src/gallium/drivers/ilo/shader/ilo_shader_vs.c
+++ b/src/gallium/drivers/ilo/shader/ilo_shader_vs.c
@@ -33,7 +33,7 @@
#include "toy_optimize.h"
#include "toy_helpers.h"
#include "ilo_context.h"
-#include "ilo_shader.h"
+#include "ilo_shader_internal.h"
struct vs_compile_context {
struct ilo_shader *shader;