if the program is not cache we need to return INVALID_VALUE
 This patch fixes the glVertexAttrib calls. Instead of
 calling directly the real driver the current attribute
 should be cached.
GL_INVALID_VALUE should be generated if either width or height is negative.