case GL_UNSIGNED_INT:
return UNSIGNED_INT_BIT;
case GL_HALF_FLOAT:
+ case GL_HALF_FLOAT_OES:
if (ctx->Extensions.ARB_half_float_vertex)
return HALF_BIT;
else
/**
- * Sets the VertexBinding field in the vertex attribute given by attribIndex.
+ * Sets the BufferBindingIndex field for the vertex attribute given by
+ * attribIndex.
*/
static void
vertex_attrib_binding(struct gl_context *ctx,
{
struct gl_array_attributes *array = &vao->VertexAttrib[attribIndex];
- if (!_mesa_is_bufferobj(vao->VertexBinding[bindingIndex].BufferObj))
- vao->VertexAttribBufferMask &= ~VERT_BIT(attribIndex);
+ if (!_mesa_is_bufferobj(vao->BufferBinding[bindingIndex].BufferObj))
+ vao->VertexAttribBufferMask &= ~VERT_BIT(attribIndex);
else
- vao->VertexAttribBufferMask |= VERT_BIT(attribIndex);
+ vao->VertexAttribBufferMask |= VERT_BIT(attribIndex);
if (array->BufferBindingIndex != bindingIndex) {
const GLbitfield64 array_bit = VERT_BIT(attribIndex);
FLUSH_VERTICES(ctx, _NEW_ARRAY);
- vao->VertexBinding[array->BufferBindingIndex]._BoundArrays &= ~array_bit;
- vao->VertexBinding[bindingIndex]._BoundArrays |= array_bit;
+ vao->BufferBinding[array->BufferBindingIndex]._BoundArrays &= ~array_bit;
+ vao->BufferBinding[bindingIndex]._BoundArrays |= array_bit;
array->BufferBindingIndex = bindingIndex;
struct gl_buffer_object *vbo,
GLintptr offset, GLsizei stride)
{
- struct gl_vertex_buffer_binding *binding = &vao->VertexBinding[index];
+ struct gl_vertex_buffer_binding *binding = &vao->BufferBinding[index];
if (binding->BufferObj != vbo ||
binding->Offset != offset ||
GLuint divisor)
{
struct gl_vertex_buffer_binding *binding =
- &vao->VertexBinding[bindingIndex];
+ &vao->BufferBinding[bindingIndex];
if (binding->InstanceDivisor != divisor) {
FLUSH_VERTICES(ctx, _NEW_ARRAY);
legalTypesMask &= ~(UNSIGNED_INT_BIT |
INT_BIT |
UNSIGNED_INT_2_10_10_10_REV_BIT |
- INT_2_10_10_10_REV_BIT |
- HALF_BIT);
+ INT_2_10_10_10_REV_BIT);
+
+ if (!_mesa_has_OES_vertex_half_float(ctx))
+ legalTypesMask &= ~HALF_BIT;
}
}
else {
case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB:
return array->Normalized;
case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB:
- return vao->VertexBinding[array->BufferBindingIndex].BufferObj->Name;
+ return vao->BufferBinding[array->BufferBindingIndex].BufferObj->Name;
case GL_VERTEX_ATTRIB_ARRAY_INTEGER:
if ((_mesa_is_desktop_gl(ctx)
&& (ctx->Version >= 30 || ctx->Extensions.EXT_gpu_shader4))
case GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB:
if ((_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_instanced_arrays)
|| _mesa_is_gles3(ctx)) {
- return vao->VertexBinding[array->BufferBindingIndex].InstanceDivisor;
+ return vao->BufferBinding[array->BufferBindingIndex].InstanceDivisor;
}
goto error;
case GL_VERTEX_ATTRIB_BINDING:
*/
switch (pname) {
case GL_VERTEX_BINDING_OFFSET:
- params[0] = vao->VertexBinding[VERT_ATTRIB_GENERIC(index)].Offset;
+ params[0] = vao->BufferBinding[VERT_ATTRIB_GENERIC(index)].Offset;
break;
case GL_VERTEX_BINDING_STRIDE:
- params[0] = vao->VertexBinding[VERT_ATTRIB_GENERIC(index)].Stride;
+ params[0] = vao->BufferBinding[VERT_ATTRIB_GENERIC(index)].Stride;
break;
case GL_VERTEX_BINDING_DIVISOR:
- params[0] = vao->VertexBinding[VERT_ATTRIB_GENERIC(index)].InstanceDivisor;
+ params[0] = vao->BufferBinding[VERT_ATTRIB_GENERIC(index)].InstanceDivisor;
break;
case GL_VERTEX_BINDING_BUFFER:
- params[0] = vao->VertexBinding[VERT_ATTRIB_GENERIC(index)].BufferObj->Name;
+ params[0] = vao->BufferBinding[VERT_ATTRIB_GENERIC(index)].BufferObj->Name;
break;
default:
params[0] = get_vertex_array_attrib(ctx, vao, index, pname,
return;
}
- params[0] = vao->VertexBinding[VERT_ATTRIB_GENERIC(index)].Offset;
+ params[0] = vao->BufferBinding[VERT_ATTRIB_GENERIC(index)].Offset;
}
}
if (buffer ==
- vao->VertexBinding[VERT_ATTRIB_GENERIC(bindingIndex)].BufferObj->Name) {
- vbo = vao->VertexBinding[VERT_ATTRIB_GENERIC(bindingIndex)].BufferObj;
+ vao->BufferBinding[VERT_ATTRIB_GENERIC(bindingIndex)].BufferObj->Name) {
+ vbo = vao->BufferBinding[VERT_ATTRIB_GENERIC(bindingIndex)].BufferObj;
} else if (buffer != 0) {
vbo = _mesa_lookup_bufferobj(ctx, buffer);
if (buffers[i]) {
struct gl_vertex_buffer_binding *binding =
- &vao->VertexBinding[VERT_ATTRIB_GENERIC(first + i)];
+ &vao->BufferBinding[VERT_ATTRIB_GENERIC(first + i)];
if (buffers[i] == binding->BufferObj->Name)
vbo = binding->BufferObj;
*/
void
_mesa_copy_client_array(struct gl_context *ctx,
- struct gl_client_array *dst,
- struct gl_client_array *src)
+ struct gl_vertex_array *dst,
+ struct gl_vertex_array *src)
{
dst->Size = src->Size;
dst->Type = src->Type;
continue;
const struct gl_vertex_buffer_binding *binding =
- &vao->VertexBinding[array->BufferBindingIndex];
+ &vao->BufferBinding[array->BufferBindingIndex];
const struct gl_buffer_object *bo = binding->BufferObj;
fprintf(stderr, " %s: Ptr=%p, Type=%s, Size=%d, ElemSize=%u, "