summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJordan Justen <[email protected]>2016-07-22 15:23:55 -0700
committerJordan Justen <[email protected]>2016-11-23 11:15:31 -0800
commit72c00e7c478f23835b4d94ef3a7c6ef2524d40fa (patch)
treefa6ef50e7c3f4a25041060efaa17efa450e2a637 /src
parent76e953788a77220d5de9a44c287e2849a42e4ffc (diff)
i965/gen7: Only advertise 4 samples for RGBA32F on GLES
We can't render to 8x MSAA if the width is greater than 64 bits. (see brw_render_target_supported) Fixes ES31-CTS.sample_variables.mask.rgba32f.samples_8.mask_* Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Samuel Iglesias Gonsálvez <[email protected]> Reviewed-by: Iago Toral Quiroga <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/i965/brw_formatquery.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_formatquery.c b/src/mesa/drivers/dri/i965/brw_formatquery.c
index 8f7a910415f..96cc6e04ee7 100644
--- a/src/mesa/drivers/dri/i965/brw_formatquery.c
+++ b/src/mesa/drivers/dri/i965/brw_formatquery.c
@@ -23,6 +23,7 @@
#include "brw_context.h"
#include "brw_state.h"
+#include "main/context.h"
#include "main/formatquery.h"
#include "main/glformats.h"
@@ -50,9 +51,24 @@ brw_query_samples_for_format(struct gl_context *ctx, GLenum target,
return 3;
case 7:
- samples[0] = 8;
- samples[1] = 4;
- return 2;
+ if (internalFormat == GL_RGBA32F && _mesa_is_gles(ctx)) {
+ /* For GLES, we are allowed to return a smaller number of samples for
+ * GL_RGBA32F. See OpenGLES 3.2 spec, section 20.3.1 Internal Format
+ * Query Parameters, under SAMPLES:
+ *
+ * "A value less than or equal to the value of MAX_SAMPLES, if
+ * internalformat is RGBA16F, R32F, RG32F, or RGBA32F."
+ *
+ * In brw_render_target_supported, we prevent formats with a size
+ * greater than 8 bytes from using 8x MSAA on gen7.
+ */
+ samples[0] = 4;
+ return 1;
+ } else {
+ samples[0] = 8;
+ samples[1] = 4;
+ return 2;
+ }
case 6:
samples[0] = 4;