aboutsummaryrefslogtreecommitdiff
path: root/src/mesa/ppc/rlvec.h
diff options
context:
space:
mode:
authorRadosław Kujawa <radoslaw.kujawa@c0ff33.net>2026-07-17 14:54:32 +0200
committerRadosław Kujawa <radoslaw.kujawa@c0ff33.net>2026-07-17 14:54:32 +0200
commit2702c90d7a39fca2a3319c5e915fd290cb31fc70 (patch)
tree283c4d851efef7e3a7cd03ba80c87e2bffcdbb2c /src/mesa/ppc/rlvec.h
parent836167945ec2c7ad5acdf0aa17ce35ec1b9428a6 (diff)
Initial import.
Diffstat (limited to 'src/mesa/ppc/rlvec.h')
-rw-r--r--src/mesa/ppc/rlvec.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/mesa/ppc/rlvec.h b/src/mesa/ppc/rlvec.h
new file mode 100644
index 0000000..bd0286a
--- /dev/null
+++ b/src/mesa/ppc/rlvec.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2026 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Radoslaw Kujawa.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef RLVEC_H
+#define RLVEC_H
+
+#include <stdint.h>
+
+typedef void rlvec_xform_points3_fn(float *to, const float m[16],
+ const float *from, int from_stride, int count);
+
+typedef uint32_t rlvec_outcode5_fn(uint8_t *oc, uint32_t *and_out,
+ const float *clip, int count);
+
+typedef void rlvec_project_fn(float *out9, const float *clip,
+ const float *attr, const float k[8], int count);
+
+typedef uint32_t *rlvec_emit_tris_fn(uint32_t *dst, const float *verts9,
+ const uint8_t *idx, int ntris, uint32_t hdr);
+
+struct rlvec_ops {
+ rlvec_xform_points3_fn *xform_points3;
+ rlvec_outcode5_fn *outcode5;
+ rlvec_project_fn *project;
+ rlvec_emit_tris_fn *emit_tris;
+};
+
+extern struct rlvec_ops rlvec; /* active table */
+extern const struct rlvec_ops rlvec_c; /* portable reference */
+#ifdef RLVEC_PPC
+extern const struct rlvec_ops rlvec_ppc; /* rlvec_ppc.S */
+#endif
+
+void rlvec_init(void);
+
+#endif /* RLVEC_H */