mesa: consolidate code in _mesa_update_array_max_element()
This commit is contained in:
@@ -50,6 +50,7 @@
|
||||
#include "arrayobj.h"
|
||||
#include "macros.h"
|
||||
#include "mtypes.h"
|
||||
#include "varray.h"
|
||||
#include "main/dispatch.h"
|
||||
|
||||
|
||||
@@ -279,37 +280,6 @@ remove_array_object( struct gl_context *ctx, struct gl_array_object *obj )
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Compute the index of the last array element that can be safely accessed
|
||||
* in a vertex array. We can really only do this when the array lives in
|
||||
* a VBO.
|
||||
* The array->_MaxElement field will be updated.
|
||||
* Later in glDrawArrays/Elements/etc we can do some bounds checking.
|
||||
*/
|
||||
static void
|
||||
compute_max_element(struct gl_client_array *array)
|
||||
{
|
||||
if (array->BufferObj->Name) {
|
||||
/* Compute the max element we can access in the VBO without going
|
||||
* out of bounds.
|
||||
*/
|
||||
array->_MaxElement = ((GLsizeiptrARB) array->BufferObj->Size
|
||||
- (GLsizeiptrARB) array->Ptr + array->StrideB
|
||||
- array->_ElementSize) / array->StrideB;
|
||||
if (0)
|
||||
printf("%s Object %u Size %u MaxElement %u\n",
|
||||
__FUNCTION__,
|
||||
array->BufferObj->Name,
|
||||
(GLuint) array->BufferObj->Size,
|
||||
array->_MaxElement);
|
||||
}
|
||||
else {
|
||||
/* user-space array, no idea how big it is */
|
||||
array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper for update_arrays().
|
||||
* \return min(current min, array->_MaxElement).
|
||||
@@ -317,7 +287,7 @@ compute_max_element(struct gl_client_array *array)
|
||||
static GLuint
|
||||
update_min(GLuint min, struct gl_client_array *array)
|
||||
{
|
||||
compute_max_element(array);
|
||||
_mesa_update_array_max_element(array);
|
||||
if (array->Enabled)
|
||||
return MIN2(min, array->_MaxElement);
|
||||
else
|
||||
|
Reference in New Issue
Block a user