Mesa (master): glsl: check that the fragment shader does not write both gl_FragColor and gl_FragData []
Brian Paul
brianp at kemper.freedesktop.org
Thu Jan 8 01:49:30 UTC 2009
Module: Mesa
Branch: master
Commit: d1860bcd0ade44a884ac1b7e0c5b2bef8ed6afcb
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d1860bcd0ade44a884ac1b7e0c5b2bef8ed6afcb
Author: Brian Paul <brianp at vmware.com>
Date: Wed Jan 7 18:22:56 2009 -0700
glsl: check that the fragment shader does not write both gl_FragColor and gl_FragData[]
---
src/mesa/shader/slang/slang_link.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c
index 108d11c..26f5d61 100644
--- a/src/mesa/shader/slang/slang_link.c
+++ b/src/mesa/shader/slang/slang_link.c
@@ -645,6 +645,17 @@ _slang_link(GLcontext *ctx,
}
}
+ /* check that gl_FragColor and gl_FragData are not both written to */
+ if (shProg->FragmentProgram) {
+ GLbitfield outputsWritten = shProg->FragmentProgram->Base.OutputsWritten;
+ if ((outputsWritten & ((1 << FRAG_RESULT_COLR))) &&
+ (outputsWritten >= (1 << FRAG_RESULT_DATA0))) {
+ link_error(shProg, "Fragment program cannot write both gl_FragColor"
+ " and gl_FragData[].\n");
+ return;
+ }
+ }
+
if (fragProg && shProg->FragmentProgram) {
/* Compute initial program's TexturesUsed info */
More information about the mesa-commit
mailing list