Commit 6163c759 by Jamie Madill

ES3: Allow floating point blit conversions under extension.

If we support EXT_color_buffer_float, we should also allow blits to and from float and fixed point data, according to the extension spec. BUG=angleproject:1243 TEST=dEQP-GLES3.functional.fbo.blit.* Change-Id: I0957ac0647c94e38ebd67480c608eeb16c82dbf4 Reviewed-on: https://chromium-review.googlesource.com/316030 Tryjob-Request: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 3d890436
......@@ -656,6 +656,7 @@ bool ValidateBlitFramebufferParameters(gl::Context *context, GLint srcX0, GLint
{
const gl::FramebufferAttachment *readColorBuffer = readFramebuffer->getReadColorbuffer();
const gl::FramebufferAttachment *drawColorBuffer = drawFramebuffer->getFirstColorbuffer();
const Extensions &extensions = context->getExtensions();
if (readColorBuffer && drawColorBuffer)
{
......@@ -673,20 +674,45 @@ bool ValidateBlitFramebufferParameters(gl::Context *context, GLint srcX0, GLint
// 1) If the read buffer is fixed point format, the draw buffer must be as well
// 2) If the read buffer is an unsigned integer format, the draw buffer must be as well
// 3) If the read buffer is a signed integer format, the draw buffer must be as well
if ( (readFormatInfo.componentType == GL_UNSIGNED_NORMALIZED || readFormatInfo.componentType == GL_SIGNED_NORMALIZED) &&
!(drawFormatInfo.componentType == GL_UNSIGNED_NORMALIZED || drawFormatInfo.componentType == GL_SIGNED_NORMALIZED))
// Changes with EXT_color_buffer_float:
// Case 1) is changed to fixed point OR floating point
GLenum readComponentType = readFormatInfo.componentType;
GLenum drawComponentType = drawFormatInfo.componentType;
bool readFixedPoint = (readComponentType == GL_UNSIGNED_NORMALIZED ||
readComponentType == GL_SIGNED_NORMALIZED);
bool drawFixedPoint = (drawComponentType == GL_UNSIGNED_NORMALIZED ||
drawComponentType == GL_SIGNED_NORMALIZED);
if (extensions.colorBufferFloat)
{
context->recordError(Error(GL_INVALID_OPERATION));
bool readFixedOrFloat = (readFixedPoint || readComponentType == GL_FLOAT);
bool drawFixedOrFloat = (drawFixedPoint || drawComponentType == GL_FLOAT);
if (readFixedOrFloat != drawFixedOrFloat)
{
context->recordError(Error(GL_INVALID_OPERATION,
"If the read buffer contains fixed-point or "
"floating-point values, the draw buffer "
"must as well."));
return false;
}
}
else if (readFixedPoint != drawFixedPoint)
{
context->recordError(Error(GL_INVALID_OPERATION,
"If the read buffer contains fixed-point "
"values, the draw buffer must as well."));
return false;
}
if (readFormatInfo.componentType == GL_UNSIGNED_INT && drawFormatInfo.componentType != GL_UNSIGNED_INT)
if (readComponentType == GL_UNSIGNED_INT &&
drawComponentType != GL_UNSIGNED_INT)
{
context->recordError(Error(GL_INVALID_OPERATION));
return false;
}
if (readFormatInfo.componentType == GL_INT && drawFormatInfo.componentType != GL_INT)
if (readComponentType == GL_INT && drawComponentType != GL_INT)
{
context->recordError(Error(GL_INVALID_OPERATION));
return false;
......
......@@ -410,94 +410,6 @@
1097 WIN : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba8_to_rgba32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba8_to_rgba16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba8_to_r11f_g11f_b10f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba8_to_rg32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba8_to_rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba8_to_r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba8_to_r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.srgb8_alpha8_to_rgba32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.srgb8_alpha8_to_rgba16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.srgb8_alpha8_to_r11f_g11f_b10f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.srgb8_alpha8_to_rg32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.srgb8_alpha8_to_rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.srgb8_alpha8_to_r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.srgb8_alpha8_to_r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb10_a2_to_rgba32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb10_a2_to_rgba16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb10_a2_to_r11f_g11f_b10f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb10_a2_to_rg32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb10_a2_to_rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb10_a2_to_r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb10_a2_to_r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba4_to_rgba32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba4_to_rgba16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba4_to_r11f_g11f_b10f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba4_to_rg32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba4_to_rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba4_to_r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgba4_to_r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb5_a1_to_rgba32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb5_a1_to_rgba16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb5_a1_to_r11f_g11f_b10f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb5_a1_to_rg32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb5_a1_to_rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb5_a1_to_r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb5_a1_to_r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb8_to_rgba32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb8_to_rgba16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb8_to_r11f_g11f_b10f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb8_to_rg32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb8_to_rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb8_to_r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb8_to_r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb565_to_rgba32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb565_to_rgba16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb565_to_r11f_g11f_b10f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb565_to_rg32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb565_to_rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb565_to_r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rgb565_to_r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rg8_to_rgba32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rg8_to_rgba16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rg8_to_r11f_g11f_b10f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rg8_to_rg32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rg8_to_rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rg8_to_r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.rg8_to_r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.r8_to_rgba32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.r8_to_rgba16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.r8_to_r11f_g11f_b10f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.r8_to_rg32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.r8_to_rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.r8_to_r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.conversion.r8_to_r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rgba32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rgba32f_nearest_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rgba32f_nearest_out_of_bounds_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rgba16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rgba16f_nearest_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rgba16f_linear_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rgba16f_linear_out_of_bounds_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r11f_g11f_b10f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r11f_g11f_b10f_nearest_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r11f_g11f_b10f_linear_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r11f_g11f_b10f_linear_out_of_bounds_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rg32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rg32f_nearest_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rg32f_nearest_out_of_bounds_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rg16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rg16f_nearest_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rg16f_linear_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.rg16f_linear_out_of_bounds_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r32f_nearest_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r32f_nearest_out_of_bounds_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r16f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r16f_nearest_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r16f_linear_scale_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.blit.default_framebuffer.r16f_linear_out_of_bounds_blit_from_default = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component32f = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component24 = FAIL
1097 WIN : dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component16 = FAIL
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment