Преглед на файлове

st: use pointer_to_offset() cast wrapper to convert pointers to uint

Silences warnings with 64-bit builds.  See comments for details.
tags/mesa_20090313
Brian Paul преди 16 години
родител
ревизия
44af5a953f
променени са 3 файла, в които са добавени 19 реда и са изтрити 4 реда
  1. 3
    3
      src/mesa/state_tracker/st_draw.c
  2. 15
    0
      src/mesa/state_tracker/st_draw.h
  3. 1
    1
      src/mesa/state_tracker/st_draw_feedback.c

+ 3
- 3
src/mesa/state_tracker/st_draw.c Целия файл

@@ -379,7 +379,7 @@ setup_interleaved_attribs(GLcontext *ctx,
else {
vbuffer->buffer = NULL;
pipe_buffer_reference(&vbuffer->buffer, stobj->buffer);
vbuffer->buffer_offset = (unsigned) low;
vbuffer->buffer_offset = pointer_to_offset(low);
}
vbuffer->stride = stride; /* in bytes */
vbuffer->max_index = max_index;
@@ -434,7 +434,7 @@ setup_non_interleaved_attribs(GLcontext *ctx,

vbuffer[attr].buffer = NULL;
pipe_buffer_reference(&vbuffer[attr].buffer, stobj->buffer);
vbuffer[attr].buffer_offset = (unsigned) arrays[mesaAttr]->Ptr;
vbuffer[attr].buffer_offset = pointer_to_offset(arrays[mesaAttr]->Ptr);
velements[attr].src_offset = 0;
}
else {
@@ -618,7 +618,7 @@ st_draw_vbo(GLcontext *ctx,
/* elements/indexes are in a real VBO */
struct st_buffer_object *stobj = st_buffer_object(bufobj);
pipe_buffer_reference(&indexBuf, stobj->buffer);
indexOffset = (unsigned) ib->ptr / indexSize;
indexOffset = pointer_to_offset(ib->ptr) / indexSize;
}
else {
/* element/indicies are in user space memory */

+ 15
- 0
src/mesa/state_tracker/st_draw.h Целия файл

@@ -64,4 +64,19 @@ st_feedback_draw_vbo(GLcontext *ctx,
extern GLuint
st_pipe_vertex_format(GLenum type, GLuint size, GLboolean normalized);


/**
* When drawing with VBOs, the addresses specified with
* glVertex/Color/TexCoordPointer() are really offsets into the VBO, not real
* addresses. At some point we need to convert those pointers to offsets.
* This function is basically a cast wrapper to avoid warnings when building
* in 64-bit mode.
*/
static INLINE unsigned
pointer_to_offset(const void *ptr)
{
return (unsigned) (((unsigned long) ptr) & 0xffffffffUL);
}


#endif

+ 1
- 1
src/mesa/state_tracker/st_draw_feedback.c Целия файл

@@ -153,7 +153,7 @@ st_feedback_draw_vbo(GLcontext *ctx,

vbuffers[attr].buffer = NULL;
pipe_buffer_reference(&vbuffers[attr].buffer, stobj->buffer);
vbuffers[attr].buffer_offset = (unsigned) arrays[0]->Ptr;/* in bytes */
vbuffers[attr].buffer_offset = pointer_to_offset(arrays[0]->Ptr);
velements[attr].src_offset = arrays[mesaAttr]->Ptr - arrays[0]->Ptr;
}
else {

Loading…
Отказ
Запис