/**************************************************************************
*
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2007 VMware, Inc.
* Copyright 2012 Marek Olšák <maraeo@gmail.com>
* All Rights Reserved.
*
* Gallium vertex state and binds it.
*
* Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
+ * Keith Whitwell <keithw@vmware.com>
* Marek Olšák <maraeo@gmail.com>
*/
assert((type >= GL_BYTE && type <= GL_DOUBLE) ||
type == GL_FIXED || type == GL_HALF_FLOAT ||
type == GL_INT_2_10_10_10_REV ||
- type == GL_UNSIGNED_INT_2_10_10_10_REV);
+ type == GL_UNSIGNED_INT_2_10_10_10_REV ||
+ type == GL_UNSIGNED_INT_10F_11F_11F_REV);
assert(size >= 1);
assert(size <= 4);
assert(format == GL_RGBA || format == GL_BGRA);
}
}
+ if (type == GL_UNSIGNED_INT_10F_11F_11F_REV) {
+ assert(size == 3);
+ assert(!integer);
+ assert(format == GL_RGBA);
+
+ return PIPE_FORMAT_R11G11B10_FLOAT;
+ }
+
if (format == GL_BGRA) {
/* this is an odd-ball case */
assert(type == GL_UNSIGNED_BYTE);
const GLuint mesaAttr = vp->index_to_input[attr];
const struct gl_client_array *array = arrays[mesaAttr];
unsigned src_offset = (unsigned) (array->Ptr - low_addr);
- GLuint element_size = array->_ElementSize;
- assert(element_size == array->Size * _mesa_sizeof_type(array->Type));
+ assert(array->_ElementSize ==
+ _mesa_bytes_per_vertex_attrib(array->Size, array->Type));
velements[attr].src_offset = src_offset;
velements[attr].instance_divisor = array->InstanceDivisor;
struct gl_buffer_object *bufobj = array->BufferObj;
GLsizei stride = array->StrideB;
- assert(array->_ElementSize == array->Size * _mesa_sizeof_type(array->Type));
+ assert(array->_ElementSize ==
+ _mesa_bytes_per_vertex_attrib(array->Size, array->Type));
if (_mesa_is_bufferobj(bufobj)) {
/* Attribute data is in a VBO.
const struct st_tracked_state st_update_array = {
"st_update_array", /* name */
{ /* dirty */
- (_NEW_PROGRAM | _NEW_BUFFER_OBJECT), /* mesa */
+ 0, /* mesa */
ST_NEW_VERTEX_ARRAYS | ST_NEW_VERTEX_PROGRAM, /* st */
},
update_array /* update */