aboutsummaryrefslogtreecommitdiffstats
path: root/src/panfrost/encoder
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-12-27 12:56:03 -0500
committerAlyssa Rosenzweig <[email protected]>2019-12-27 12:58:00 -0500
commitde077c20788e9cccd0efe5765bbafe2cf881eb5c (patch)
tree1a1bfbecbf59960cfe646c934c4a74b35815e403 /src/panfrost/encoder
parentbc1fc29e2119bfceeacaa303a5f79f9bb99d1af7 (diff)
panfrost: Remove mali_alt_func
There's only one way to encode comparison functions in the command stream, not two. It's just that the semantics for texture comparisons are flipped from the semantics of stencil comparison. We can factor out that flip to common Panfrost code, rather than tying it to a second Gallium routine. Signed-off-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/panfrost/encoder')
-rw-r--r--src/panfrost/encoder/meson.build1
-rw-r--r--src/panfrost/encoder/pan_encoder.h5
-rw-r--r--src/panfrost/encoder/pan_sampler.c45
3 files changed, 51 insertions, 0 deletions
diff --git a/src/panfrost/encoder/meson.build b/src/panfrost/encoder/meson.build
index 35e6f2aacd5..e203e911de8 100644
--- a/src/panfrost/encoder/meson.build
+++ b/src/panfrost/encoder/meson.build
@@ -24,6 +24,7 @@ libpanfrost_encoder_files = files(
'pan_attributes.c',
'pan_invocation.c',
+ 'pan_sampler.c',
'pan_tiler.c',
'pan_scratch.c',
'pan_props.c',
diff --git a/src/panfrost/encoder/pan_encoder.h b/src/panfrost/encoder/pan_encoder.h
index 77f5b2ebb0f..2f3ab0d10a9 100644
--- a/src/panfrost/encoder/pan_encoder.h
+++ b/src/panfrost/encoder/pan_encoder.h
@@ -102,4 +102,9 @@ panfrost_vertex_instanced(
void panfrost_vertex_id(unsigned padded_count, union mali_attr *attr);
void panfrost_instance_id(unsigned padded_count, union mali_attr *attr);
+/* Samplers */
+
+enum mali_func
+panfrost_flip_compare_func(enum mali_func f);
+
#endif
diff --git a/src/panfrost/encoder/pan_sampler.c b/src/panfrost/encoder/pan_sampler.c
new file mode 100644
index 00000000000..63ddd17b816
--- /dev/null
+++ b/src/panfrost/encoder/pan_sampler.c
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019 Collabora, Ltd.
+ *
+ * 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 (including the next
+ * paragraph) 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.
+ *
+ */
+
+#include "pan_encoder.h"
+
+/* Sampler comparison functions are flipped in OpenGL from the hardware, so we
+ * need to be able to flip accordingly */
+
+enum mali_func
+panfrost_flip_compare_func(enum mali_func f)
+{
+ switch (f) {
+ case MALI_FUNC_LESS:
+ return MALI_FUNC_GREATER;
+ case MALI_FUNC_GREATER:
+ return MALI_FUNC_LESS;
+ case MALI_FUNC_LEQUAL:
+ return MALI_FUNC_GEQUAL;
+ case MALI_FUNC_GEQUAL:
+ return MALI_FUNC_LEQUAL;
+ default:
+ return f;
+ }
+}