summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/v3d/v3d_program.c
diff options
context:
space:
mode:
authorIago Toral Quiroga <[email protected]>2019-07-03 09:14:25 +0200
committerIago Toral Quiroga <[email protected]>2019-07-12 09:16:38 +0200
commit0279ac6e51e772bf9c374f4eb736d5f11d97d5f9 (patch)
treeb4520ed6d99b0fcb5b176558e1e3437cbf5ec73b /src/gallium/drivers/v3d/v3d_program.c
parentd26b35ba4478993db85a9a2d3d36b22e941de9f7 (diff)
v3d: add color formats and swizzles to the fragment shader key
We are going to need these very soon to emit correct reads from the tlb to implement logic operations. Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/gallium/drivers/v3d/v3d_program.c')
-rw-r--r--src/gallium/drivers/v3d/v3d_program.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/gallium/drivers/v3d/v3d_program.c b/src/gallium/drivers/v3d/v3d_program.c
index cdacb5dbb80..78c41c8efd1 100644
--- a/src/gallium/drivers/v3d/v3d_program.c
+++ b/src/gallium/drivers/v3d/v3d_program.c
@@ -537,6 +537,17 @@ v3d_update_compiled_fs(struct v3d_context *v3d, uint8_t prim_mode)
*/
key->cbufs |= 1 << i;
+ /* If logic operations are enabled then we might emit color
+ * reads and we need to know the color buffer format and
+ * swizzle for that.
+ */
+ if (key->logicop_func != PIPE_LOGICOP_COPY) {
+ key->color_fmt[i].format = cbuf->format;
+ key->color_fmt[i].swizzle =
+ v3d_get_format_swizzle(&v3d->screen->devinfo,
+ cbuf->format);
+ }
+
const struct util_format_description *desc =
util_format_description(cbuf->format);