[Piglit] [PATCH 1/3] msaa: Add the ability to run msaa tests without color/depth/stencil buffers.

Ian Romanick idr at freedesktop.org
Tue Jul 17 11:33:17 PDT 2012


On 07/12/2012 05:53 PM, Paul Berry wrote:
> This patch modifies the common code for MSAA tests, so that we can
> easily configure framebuffers that lack a color, depth, and/or stencil
> buffer.

For the series,

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

> ---
>   tests/spec/ext_framebuffer_multisample/common.cpp |  104 +++++++++++---------
>   tests/spec/ext_framebuffer_multisample/common.h   |   21 ++++-
>   2 files changed, 76 insertions(+), 49 deletions(-)
>
> diff --git a/tests/spec/ext_framebuffer_multisample/common.cpp b/tests/spec/ext_framebuffer_multisample/common.cpp
> index e1f6127..12c9c82 100644
> --- a/tests/spec/ext_framebuffer_multisample/common.cpp
> +++ b/tests/spec/ext_framebuffer_multisample/common.cpp
> @@ -116,7 +116,9 @@ FboConfig::FboConfig(int num_samples, int width, int height)
>   	  height(height),
>   	  combine_depth_stencil(true),
>   	  attach_texture(false),
> -	  color_internalformat(GL_RGBA)
> +	  color_internalformat(GL_RGBA),
> +	  depth_internalformat(GL_DEPTH_COMPONENT24),
> +	  stencil_internalformat(GL_STENCIL_INDEX8)
>   {
>   }
>
> @@ -186,36 +188,38 @@ Fbo::try_setup(const FboConfig &new_config)
>   	glBindFramebuffer(GL_DRAW_FRAMEBUFFER, handle);
>
>   	/* Color buffer */
> -	if (!config.attach_texture) {
> -		glBindRenderbuffer(GL_RENDERBUFFER, color_rb);
> -		glRenderbufferStorageMultisample(GL_RENDERBUFFER,
> -						 config.num_samples,
> -						 config.color_internalformat,
> -						 config.width,
> -						 config.height);
> -		glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER,
> -					  GL_COLOR_ATTACHMENT0,
> -					  GL_RENDERBUFFER, color_rb);
> -	} else {
> -		glBindTexture(GL_TEXTURE_2D, color_tex);
> -		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
> -				GL_NEAREST);
> -		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
> -				GL_NEAREST);
> -		glTexImage2D(GL_TEXTURE_2D,
> -			     0 /* level */,
> -			     config.color_internalformat,
> -			     config.width,
> -			     config.height,
> -			     0 /* border */,
> -			     GL_RGBA /* format */,
> -			     GL_BYTE /* type */,
> -			     NULL /* data */);
> -		glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,
> -				       GL_COLOR_ATTACHMENT0,
> -				       GL_TEXTURE_2D,
> -				       color_tex,
> -				       0 /* level */);
> +	if (config.color_internalformat != GL_NONE) {
> +		if (!config.attach_texture) {
> +			glBindRenderbuffer(GL_RENDERBUFFER, color_rb);
> +			glRenderbufferStorageMultisample(GL_RENDERBUFFER,
> +							 config.num_samples,
> +							 config.color_internalformat,
> +							 config.width,
> +							 config.height);
> +			glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER,
> +						  GL_COLOR_ATTACHMENT0,
> +						  GL_RENDERBUFFER, color_rb);
> +		} else {
> +			glBindTexture(GL_TEXTURE_2D, color_tex);
> +			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
> +					GL_NEAREST);
> +			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
> +					GL_NEAREST);
> +			glTexImage2D(GL_TEXTURE_2D,
> +				     0 /* level */,
> +				     config.color_internalformat,
> +				     config.width,
> +				     config.height,
> +				     0 /* border */,
> +				     GL_RGBA /* format */,
> +				     GL_BYTE /* type */,
> +				     NULL /* data */);
> +			glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER,
> +					       GL_COLOR_ATTACHMENT0,
> +					       GL_TEXTURE_2D,
> +					       color_tex,
> +					       0 /* level */);
> +		}
>   	}
>
>   	/* Depth/stencil buffer(s) */
> @@ -230,23 +234,29 @@ Fbo::try_setup(const FboConfig &new_config)
>   					  GL_DEPTH_STENCIL_ATTACHMENT,
>   					  GL_RENDERBUFFER, depth_rb);
>   	} else {
> -		glBindRenderbuffer(GL_RENDERBUFFER, stencil_rb);
> -		glRenderbufferStorageMultisample(GL_RENDERBUFFER,
> -						 config.num_samples,
> -						 GL_STENCIL_INDEX8,
> -						 config.width, config.height);
> -		glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER,
> -					  GL_STENCIL_ATTACHMENT,
> -					  GL_RENDERBUFFER, stencil_rb);
> +		if (config.stencil_internalformat != GL_NONE) {
> +			glBindRenderbuffer(GL_RENDERBUFFER, stencil_rb);
> +			glRenderbufferStorageMultisample(GL_RENDERBUFFER,
> +							 config.num_samples,
> +							 config.stencil_internalformat,
> +							 config.width,
> +							 config.height);
> +			glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER,
> +						  GL_STENCIL_ATTACHMENT,
> +						  GL_RENDERBUFFER, stencil_rb);
> +		}
>
> -		glBindRenderbuffer(GL_RENDERBUFFER, depth_rb);
> -		glRenderbufferStorageMultisample(GL_RENDERBUFFER,
> -						 config.num_samples,
> -						 GL_DEPTH_COMPONENT24,
> -						 config.width, config.height);
> -		glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER,
> -					  GL_DEPTH_ATTACHMENT,
> -					  GL_RENDERBUFFER, depth_rb);
> +		if (config.depth_internalformat != GL_NONE) {
> +			glBindRenderbuffer(GL_RENDERBUFFER, depth_rb);
> +			glRenderbufferStorageMultisample(GL_RENDERBUFFER,
> +							 config.num_samples,
> +							 config.depth_internalformat,
> +							 config.width,
> +							 config.height);
> +			glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER,
> +						  GL_DEPTH_ATTACHMENT,
> +						  GL_RENDERBUFFER, depth_rb);
> +		}
>   	}
>
>   	bool success = glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER)
> diff --git a/tests/spec/ext_framebuffer_multisample/common.h b/tests/spec/ext_framebuffer_multisample/common.h
> index d941e96..3caccaa 100644
> --- a/tests/spec/ext_framebuffer_multisample/common.h
> +++ b/tests/spec/ext_framebuffer_multisample/common.h
> @@ -66,10 +66,27 @@ public:
>   	bool attach_texture;
>
>   	/**
> -	 * Internalformat that should be used for the color buffer.
> -	 * Defaults to GL_RGBA.
> +	 * Internalformat that should be used for the color buffer, or
> +	 * GL_NONE if no color buffer should be used.  Defaults to
> +	 * GL_RGBA.
>   	 */
>   	GLenum color_internalformat;
> +
> +	/**
> +	 * Internalformat that should be used for the depth buffer, or
> +	 * GL_NONE if no depth buffer should be used.  Ignored if
> +	 * combine_depth_stencil is true.  Defaults to
> +	 * GL_DEPTH_COMPONENT24.
> +	 */
> +	GLenum depth_internalformat;
> +
> +	/**
> +	 * Internalformat that should be used for the stencil buffer,
> +	 * or GL_NONE if no stencil buffer should be used.  Ignored if
> +	 * combine_depth_stencil is true.  Defaults to
> +	 * GL_STENCIL_INDEX8.
> +	 */
> +	GLenum stencil_internalformat;
>   };
>
>   /**
>




More information about the Piglit mailing list