When a gl_client_array is created with glColorPointer, gl_client_array::Normalized is true. This caused the translation from the gl_client_array's type to a BRW_SURFACEFORMAT to assertion fail. Fixes the spinning cube's color in Android 4.2's ApiDemos.apk, "Graphics > OpenGL ES". Fixes assertion failure in mesa-demos/src/egl/opengles1/tri_x11 on Haswell and Ivybridge: brw_draw_upload.c:287: get_surface_type: Assertion `0' failed. No Piglit regressions on Haswell. Note: This is a candidate for the 9.1 branch. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42182 Issue: AXIA-2954 Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>tags/mesa-9.2-rc1
@@ -263,6 +263,14 @@ get_surface_type(struct intel_context *intel, | |||
else { | |||
return ubyte_types_norm[size]; | |||
} | |||
case GL_FIXED: | |||
if (intel->gen >= 8 || intel->is_haswell) | |||
return fixed_point_types[size]; | |||
/* This produces GL_FIXED inputs as values between INT32_MIN and | |||
* INT32_MAX, which will be scaled down by 1/65536 by the VS. | |||
*/ | |||
return int_types_scale[size]; | |||
/* See GL_ARB_vertex_type_2_10_10_10_rev. | |||
* W/A: Pre-Haswell, the hardware doesn't really support the formats we'd | |||
* like to use here, so upload everything as UINT and fix |