st/mesa: use 'array' local var to simplify the code a bit

This commit is contained in:
Brian Paul 2011-04-04 17:36:40 -06:00
parent 6cab07685f
commit ed9396782e
1 changed files with 28 additions and 29 deletions

View File

@ -253,8 +253,9 @@ is_interleaved_arrays(const struct st_vertex_program *vp,
for (attr = 0; attr < vpv->num_inputs; attr++) {
const GLuint mesaAttr = vp->index_to_input[attr];
const struct gl_buffer_object *bufObj = arrays[mesaAttr]->BufferObj;
const GLsizei stride = arrays[mesaAttr]->StrideB; /* in bytes */
const struct gl_client_array *array = arrays[mesaAttr];
const struct gl_buffer_object *bufObj = array->BufferObj;
const GLsizei stride = array->StrideB; /* in bytes */
if (firstStride < 0) {
firstStride = stride;
@ -272,9 +273,9 @@ is_interleaved_arrays(const struct st_vertex_program *vp,
return GL_FALSE;
}
if (!client_addr) {
client_addr = arrays[mesaAttr]->Ptr;
client_addr = array->Ptr;
}
else if (abs(arrays[mesaAttr]->Ptr - client_addr) > firstStride) {
else if (abs(array->Ptr - client_addr) > firstStride) {
/* arrays start too far apart */
return GL_FALSE;
}
@ -327,9 +328,10 @@ setup_interleaved_attribs(struct gl_context *ctx,
for (attr = 0; attr < vpv->num_inputs; attr++) {
const GLuint mesaAttr = vp->index_to_input[attr];
struct gl_buffer_object *bufobj = arrays[mesaAttr]->BufferObj;
const struct gl_client_array *array = arrays[mesaAttr];
struct gl_buffer_object *bufobj = array->BufferObj;
struct st_buffer_object *stobj = st_buffer_object(bufobj);
GLsizei stride = arrays[mesaAttr]->StrideB;
GLsizei stride = array->StrideB;
if (attr == 0) {
if (bufobj && bufobj->Name) {
@ -337,7 +339,7 @@ setup_interleaved_attribs(struct gl_context *ctx,
pipe_resource_reference(&vbuffer->buffer, stobj->buffer);
vbuffer->buffer_offset = pointer_to_offset(low_addr);
} else {
uint divisor = arrays[mesaAttr]->InstanceDivisor;
uint divisor = array->InstanceDivisor;
uint length = (divisor ? num_instances / divisor : max_index) + 1;
vbuffer->buffer =
pipe_user_buffer_create(pipe->screen, (void*)low_addr,
@ -353,15 +355,13 @@ setup_interleaved_attribs(struct gl_context *ctx,
vbuffer->stride = stride; /* in bytes */
}
velements[attr].src_offset =
(unsigned) (arrays[mesaAttr]->Ptr - low_addr);
velements[attr].instance_divisor = arrays[mesaAttr]->InstanceDivisor;
velements[attr].src_offset = (unsigned) (array->Ptr - low_addr);
velements[attr].instance_divisor = array->InstanceDivisor;
velements[attr].vertex_buffer_index = 0;
velements[attr].src_format =
st_pipe_vertex_format(arrays[mesaAttr]->Type,
arrays[mesaAttr]->Size,
arrays[mesaAttr]->Format,
arrays[mesaAttr]->Normalized);
velements[attr].src_format = st_pipe_vertex_format(array->Type,
array->Size,
array->Format,
array->Normalized);
assert(velements[attr].src_format);
}
}
@ -389,8 +389,9 @@ setup_non_interleaved_attribs(struct gl_context *ctx,
for (attr = 0; attr < vpv->num_inputs; attr++) {
const GLuint mesaAttr = vp->index_to_input[attr];
struct gl_buffer_object *bufobj = arrays[mesaAttr]->BufferObj;
GLsizei stride = arrays[mesaAttr]->StrideB;
const struct gl_client_array *array = arrays[mesaAttr];
struct gl_buffer_object *bufobj = array->BufferObj;
GLsizei stride = array->StrideB;
if (bufobj && bufobj->Name) {
/* Attribute data is in a VBO.
@ -402,25 +403,24 @@ setup_non_interleaved_attribs(struct gl_context *ctx,
vbuffer[attr].buffer = NULL;
pipe_resource_reference(&vbuffer[attr].buffer, stobj->buffer);
vbuffer[attr].buffer_offset = pointer_to_offset(arrays[mesaAttr]->Ptr);
vbuffer[attr].buffer_offset = pointer_to_offset(array->Ptr);
}
else {
/* wrap user data */
uint bytes;
void *ptr;
if (arrays[mesaAttr]->Ptr) {
if (array->Ptr) {
if (stride == 0) {
bytes = _mesa_sizeof_type(arrays[mesaAttr]->Type)
* arrays[mesaAttr]->Size;
bytes = _mesa_sizeof_type(array->Type) * array->Size;
}
else {
uint divisor = arrays[mesaAttr]->InstanceDivisor;
uint divisor = array->InstanceDivisor;
uint length = (divisor ? num_instances / divisor : max_index) + 1;
bytes = stride * length;
}
ptr = (void *) arrays[mesaAttr]->Ptr;
ptr = (void *) array->Ptr;
}
else {
/* no array, use ctx->Current.Attrib[] value */
@ -448,13 +448,12 @@ setup_non_interleaved_attribs(struct gl_context *ctx,
vbuffer[attr].stride = stride; /* in bytes */
velements[attr].src_offset = 0;
velements[attr].instance_divisor = arrays[mesaAttr]->InstanceDivisor;
velements[attr].instance_divisor = array->InstanceDivisor;
velements[attr].vertex_buffer_index = attr;
velements[attr].src_format
= st_pipe_vertex_format(arrays[mesaAttr]->Type,
arrays[mesaAttr]->Size,
arrays[mesaAttr]->Format,
arrays[mesaAttr]->Normalized);
velements[attr].src_format = st_pipe_vertex_format(array->Type,
array->Size,
array->Format,
array->Normalized);
assert(velements[attr].src_format);
}
}