summaryrefslogtreecommitdiffstats
path: root/src/mesa/program/program.h
diff options
context:
space:
mode:
authorFabian Bieler <fabianbieler@fastmail.fm>2014-03-10 11:58:37 +0100
committerMarek Olšák <marek.olsak@amd.com>2015-07-23 00:59:25 +0200
commita894ed82931840713aac25634ed469ac65889bfa (patch)
treeb338127556a2abbb5e0072b279670b6fa97ecee8 /src/mesa/program/program.h
parent78d3054980edd1a12e56ad0362e889915cff335b (diff)
downloadexternal_mesa3d-a894ed82931840713aac25634ed469ac65889bfa.zip
external_mesa3d-a894ed82931840713aac25634ed469ac65889bfa.tar.gz
external_mesa3d-a894ed82931840713aac25634ed469ac65889bfa.tar.bz2
mesa: add misc tessellation shader support
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/program/program.h')
-rw-r--r--src/mesa/program/program.h62
1 files changed, 61 insertions, 1 deletions
diff --git a/src/mesa/program/program.h b/src/mesa/program/program.h
index eafb969..a894147 100644
--- a/src/mesa/program/program.h
+++ b/src/mesa/program/program.h
@@ -157,6 +157,25 @@ _mesa_reference_compprog(struct gl_context *ctx,
(struct gl_program *) prog);
}
+
+static inline void
+_mesa_reference_tesscprog(struct gl_context *ctx,
+ struct gl_tess_ctrl_program **ptr,
+ struct gl_tess_ctrl_program *prog)
+{
+ _mesa_reference_program(ctx, (struct gl_program **) ptr,
+ (struct gl_program *) prog);
+}
+
+static inline void
+_mesa_reference_tesseprog(struct gl_context *ctx,
+ struct gl_tess_eval_program **ptr,
+ struct gl_tess_eval_program *prog)
+{
+ _mesa_reference_program(ctx, (struct gl_program **) ptr,
+ (struct gl_program *) prog);
+}
+
extern struct gl_program *
_mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog);
@@ -167,6 +186,20 @@ _mesa_clone_vertex_program(struct gl_context *ctx,
return (struct gl_vertex_program *) _mesa_clone_program(ctx, &prog->Base);
}
+static inline struct gl_tess_ctrl_program *
+_mesa_clone_tess_ctrl_program(struct gl_context *ctx,
+ const struct gl_tess_ctrl_program *prog)
+{
+ return (struct gl_tess_ctrl_program *) _mesa_clone_program(ctx, &prog->Base);
+}
+
+static inline struct gl_tess_eval_program *
+_mesa_clone_tess_eval_program(struct gl_context *ctx,
+ const struct gl_tess_eval_program *prog)
+{
+ return (struct gl_tess_eval_program *) _mesa_clone_program(ctx, &prog->Base);
+}
+
static inline struct gl_geometry_program *
_mesa_clone_geometry_program(struct gl_context *ctx,
const struct gl_geometry_program *prog)
@@ -262,7 +295,9 @@ _mesa_shader_stage_to_program(unsigned stage)
}
-/* Cast wrappers from gl_program to gl_vertex/geometry/fragment_program */
+/* Cast wrappers from gl_program to derived program types.
+ * (e.g. gl_vertex_program)
+ */
static inline struct gl_fragment_program *
gl_fragment_program(struct gl_program *prog)
@@ -315,6 +350,31 @@ gl_compute_program_const(const struct gl_program *prog)
return (const struct gl_compute_program *) prog;
}
+static inline struct gl_tess_ctrl_program *
+gl_tess_ctrl_program(struct gl_program *prog)
+{
+ return (struct gl_tess_ctrl_program *) prog;
+}
+
+static inline const struct gl_tess_ctrl_program *
+gl_tess_ctrl_program_const(const struct gl_program *prog)
+{
+ return (const struct gl_tess_ctrl_program *) prog;
+}
+
+
+static inline struct gl_tess_eval_program *
+gl_tess_eval_program(struct gl_program *prog)
+{
+ return (struct gl_tess_eval_program *) prog;
+}
+
+static inline const struct gl_tess_eval_program *
+gl_tess_eval_program_const(const struct gl_program *prog)
+{
+ return (const struct gl_tess_eval_program *) prog;
+}
+
#ifdef __cplusplus
} /* extern "C" */