diff options
author | Alyssa Rosenzweig <[email protected]> | 2019-12-27 12:56:03 -0500 |
---|---|---|
committer | Alyssa Rosenzweig <[email protected]> | 2019-12-27 12:58:00 -0500 |
commit | de077c20788e9cccd0efe5765bbafe2cf881eb5c (patch) | |
tree | 1a1bfbecbf59960cfe646c934c4a74b35815e403 /src/panfrost/encoder | |
parent | bc1fc29e2119bfceeacaa303a5f79f9bb99d1af7 (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.build | 1 | ||||
-rw-r--r-- | src/panfrost/encoder/pan_encoder.h | 5 | ||||
-rw-r--r-- | src/panfrost/encoder/pan_sampler.c | 45 |
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; + } +} |