summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2016-09-17 00:33:06 -0700
committerFrancisco Jerez <currojerez@riseup.net>2016-11-07 14:07:05 -0800
commit36e225d034bdc183c0001b469cda111c4328b4ad (patch)
treee34ca675afe3a34a123e5e54a21ed67d613a3dca
parent31b8c1c43bbf511a3a1101b543e63497095d73fc (diff)
shader_runner: Add multisample framebuffer binding command.
"fb ms <format> <width> <height> <samples>" binds a fresh multisample framebuffer object with the given format and dimensions.
-rw-r--r--tests/shaders/shader_runner.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
index b387a77d7..d17e34640 100644
--- a/tests/shaders/shader_runner.c
+++ b/tests/shaders/shader_runner.c
@@ -3080,6 +3080,36 @@ piglit_display(void)
w = get_texture_binding(tex)->width;
h = get_texture_binding(tex)->height;
+ } else if (parse_str(rest, "ms ", &rest)) {
+ GLuint rb;
+ GLenum format;
+ int samples;
+
+ REQUIRE(parse_enum_gl(rest, &format, &rest) &&
+ parse_int(rest, &w, &rest) &&
+ parse_int(rest, &h, &rest) &&
+ parse_int(rest, &samples, &rest),
+ "Framebuffer binding command not "
+ "understood at: %s\n", rest);
+
+ glGenFramebuffers(1, &fbo);
+ glBindFramebuffer(target, fbo);
+
+ glGenRenderbuffers(1, &rb);
+ glBindRenderbuffer(GL_RENDERBUFFER, rb);
+
+ glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples,
+ format, w, h);
+
+ glFramebufferRenderbuffer(target,
+ GL_COLOR_ATTACHMENT0,
+ GL_RENDERBUFFER, rb);
+
+ if (!piglit_check_gl_error(GL_NO_ERROR)) {
+ fprintf(stderr, "glFramebufferRenderbuffer error\n");
+ piglit_report_result(PIGLIT_FAIL);
+ }
+
} else {
fprintf(stderr, "Unknown fb bind subcommand "
"\"%s\"\n", rest);