Commit 21b85359 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

wined3d: Make the lpData member of WineDirect3DStridedData const.

parent 657a016a
...@@ -142,7 +142,7 @@ void primitiveDeclarationConvertToStridedData( ...@@ -142,7 +142,7 @@ void primitiveDeclarationConvertToStridedData(
/* We need to deal with frequency data!*/ /* We need to deal with frequency data!*/
BYTE *data = NULL; const BYTE *data = NULL;
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
IWineD3DVertexDeclarationImpl* vertexDeclaration = (IWineD3DVertexDeclarationImpl *)This->stateBlock->vertexDecl; IWineD3DVertexDeclarationImpl* vertexDeclaration = (IWineD3DVertexDeclarationImpl *)This->stateBlock->vertexDecl;
unsigned int i; unsigned int i;
...@@ -299,8 +299,8 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData ...@@ -299,8 +299,8 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData
long SkipnStrides = startVertex + This->stateBlock->loadBaseVertexIndex; long SkipnStrides = startVertex + This->stateBlock->loadBaseVertexIndex;
BOOL pixelShader = use_ps(This); BOOL pixelShader = use_ps(This);
BYTE *texCoords[WINED3DDP_MAXTEXCOORD]; const BYTE *texCoords[WINED3DDP_MAXTEXCOORD];
BYTE *diffuse = NULL, *specular = NULL, *normal = NULL, *position = NULL; const BYTE *diffuse = NULL, *specular = NULL, *normal = NULL, *position = NULL;
TRACE("Using slow vertex array code\n"); TRACE("Using slow vertex array code\n");
...@@ -409,7 +409,7 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData ...@@ -409,7 +409,7 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData
if (This->stateBlock->textures[textureNo] != NULL || pixelShader) { if (This->stateBlock->textures[textureNo] != NULL || pixelShader) {
int coordIdx = This->stateBlock->textureState[textureNo][WINED3DTSS_TEXCOORDINDEX]; int coordIdx = This->stateBlock->textureState[textureNo][WINED3DTSS_TEXCOORDINDEX];
int texture_idx = This->texUnitMap[textureNo]; int texture_idx = This->texUnitMap[textureNo];
void *ptrToCoords; const void *ptrToCoords;
if (coordIdx > 7) { if (coordIdx > 7) {
VTRACE(("tex: %d - Skip tex coords, as being system generated\n", textureNo)); VTRACE(("tex: %d - Skip tex coords, as being system generated\n", textureNo));
...@@ -441,11 +441,11 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData ...@@ -441,11 +441,11 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData
/* Diffuse -------------------------------- */ /* Diffuse -------------------------------- */
if (diffuse) { if (diffuse) {
DWORD *ptrToCoords = (DWORD *)(diffuse + (SkipnStrides * sd->u.s.diffuse.dwStride)); const void *ptrToCoords = diffuse + SkipnStrides * sd->u.s.diffuse.dwStride;
diffuse_funcs[sd->u.s.diffuse.dwType]((void *) ptrToCoords); diffuse_funcs[sd->u.s.diffuse.dwType](ptrToCoords);
if(This->activeContext->num_untracked_materials) { if(This->activeContext->num_untracked_materials) {
DWORD diffuseColor = ptrToCoords[0]; DWORD diffuseColor = ((const DWORD *)ptrToCoords)[0];
unsigned char i; unsigned char i;
float color[4]; float color[4];
...@@ -462,14 +462,14 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData ...@@ -462,14 +462,14 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData
/* Specular ------------------------------- */ /* Specular ------------------------------- */
if (specular) { if (specular) {
DWORD *ptrToCoords = (DWORD *)(specular + (SkipnStrides * sd->u.s.specular.dwStride)); const void *ptrToCoords = specular + SkipnStrides * sd->u.s.specular.dwStride;
/* special case where the fog density is stored in the specular alpha channel */ /* special case where the fog density is stored in the specular alpha channel */
if(This->stateBlock->renderState[WINED3DRS_FOGENABLE] && if(This->stateBlock->renderState[WINED3DRS_FOGENABLE] &&
(This->stateBlock->renderState[WINED3DRS_FOGVERTEXMODE] == WINED3DFOG_NONE || sd->u.s.position.dwType == WINED3DDECLTYPE_FLOAT4 )&& (This->stateBlock->renderState[WINED3DRS_FOGVERTEXMODE] == WINED3DFOG_NONE || sd->u.s.position.dwType == WINED3DDECLTYPE_FLOAT4 )&&
This->stateBlock->renderState[WINED3DRS_FOGTABLEMODE] == WINED3DFOG_NONE) { This->stateBlock->renderState[WINED3DRS_FOGTABLEMODE] == WINED3DFOG_NONE) {
if(GL_SUPPORT(EXT_FOG_COORD)) { if(GL_SUPPORT(EXT_FOG_COORD)) {
DWORD specularColor = ptrToCoords[0]; DWORD specularColor = ((const DWORD *)ptrToCoords)[0];
GL_EXTCALL(glFogCoordfEXT(specularColor >> 24)); GL_EXTCALL(glFogCoordfEXT(specularColor >> 24));
} else { } else {
static BOOL warned = FALSE; static BOOL warned = FALSE;
...@@ -481,18 +481,18 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData ...@@ -481,18 +481,18 @@ static void drawStridedSlow(IWineD3DDevice *iface, WineDirect3DVertexStridedData
} }
} }
specular_funcs[sd->u.s.specular.dwType]((void *) ptrToCoords); specular_funcs[sd->u.s.specular.dwType](ptrToCoords);
} }
/* Normal -------------------------------- */ /* Normal -------------------------------- */
if (normal != NULL) { if (normal != NULL) {
float *ptrToCoords = (float *)(normal + (SkipnStrides * sd->u.s.normal.dwStride)); const void *ptrToCoords = normal + SkipnStrides * sd->u.s.normal.dwStride;
normal_funcs[sd->u.s.normal.dwType](ptrToCoords); normal_funcs[sd->u.s.normal.dwType](ptrToCoords);
} }
/* Position -------------------------------- */ /* Position -------------------------------- */
if (position) { if (position) {
float *ptrToCoords = (float *)(position + (SkipnStrides * sd->u.s.position.dwStride)); const void *ptrToCoords = position + SkipnStrides * sd->u.s.position.dwStride;
position_funcs[sd->u.s.position.dwType](ptrToCoords); position_funcs[sd->u.s.position.dwType](ptrToCoords);
} }
...@@ -606,7 +606,7 @@ static void drawStridedSlowVs(IWineD3DDevice *iface, WineDirect3DVertexStridedDa ...@@ -606,7 +606,7 @@ static void drawStridedSlowVs(IWineD3DDevice *iface, WineDirect3DVertexStridedDa
ULONG vx_index; ULONG vx_index;
int i; int i;
IWineD3DStateBlockImpl *stateblock = This->stateBlock; IWineD3DStateBlockImpl *stateblock = This->stateBlock;
BYTE *ptr; const BYTE *ptr;
if (idxSize != 0) { if (idxSize != 0) {
/* Immediate mode drawing can't make use of indices in a vbo - get the data from the index buffer. /* Immediate mode drawing can't make use of indices in a vbo - get the data from the index buffer.
...@@ -704,7 +704,7 @@ static inline void drawStridedInstanced(IWineD3DDevice *iface, WineDirect3DVerte ...@@ -704,7 +704,7 @@ static inline void drawStridedInstanced(IWineD3DDevice *iface, WineDirect3DVerte
for(i = 0; i < numInstances; i++) { for(i = 0; i < numInstances; i++) {
/* Specify the instanced attributes using immediate mode calls */ /* Specify the instanced attributes using immediate mode calls */
for(j = 0; j < numInstancedAttribs; j++) { for(j = 0; j < numInstancedAttribs; j++) {
BYTE *ptr = sd->u.input[instancedData[j]].lpData + const BYTE *ptr = sd->u.input[instancedData[j]].lpData +
sd->u.input[instancedData[j]].dwStride * i + sd->u.input[instancedData[j]].dwStride * i +
stateblock->streamOffset[sd->u.input[instancedData[j]].streamNo]; stateblock->streamOffset[sd->u.input[instancedData[j]].streamNo];
if(sd->u.input[instancedData[j]].VBO) { if(sd->u.input[instancedData[j]].VBO) {
...@@ -1005,7 +1005,7 @@ HRESULT tesselate_rectpatch(IWineD3DDeviceImpl *This, ...@@ -1005,7 +1005,7 @@ HRESULT tesselate_rectpatch(IWineD3DDeviceImpl *This,
unsigned int i, j, num_quads, out_vertex_size, buffer_size, d3d_out_vertex_size; unsigned int i, j, num_quads, out_vertex_size, buffer_size, d3d_out_vertex_size;
float max_x = 0.0, max_y = 0.0, max_z = 0.0, neg_z = 0.0; float max_x = 0.0, max_y = 0.0, max_z = 0.0, neg_z = 0.0;
WineDirect3DVertexStridedData strided; WineDirect3DVertexStridedData strided;
BYTE *data; const BYTE *data;
WINED3DRECTPATCH_INFO *info = &patch->RectPatchInfo; WINED3DRECTPATCH_INFO *info = &patch->RectPatchInfo;
DWORD vtxStride; DWORD vtxStride;
GLenum feedback_type; GLenum feedback_type;
...@@ -1048,7 +1048,7 @@ HRESULT tesselate_rectpatch(IWineD3DDeviceImpl *This, ...@@ -1048,7 +1048,7 @@ HRESULT tesselate_rectpatch(IWineD3DDeviceImpl *This,
/* First, get the boundary cube of the input data */ /* First, get the boundary cube of the input data */
for(j = 0; j < info->Height; j++) { for(j = 0; j < info->Height; j++) {
for(i = 0; i < info->Width; i++) { for(i = 0; i < info->Width; i++) {
float *v = (float *) (data + vtxStride * i + vtxStride * info->Stride * j); const float *v = (const float *)(data + vtxStride * i + vtxStride * info->Stride * j);
if(fabs(v[0]) > max_x) max_x = fabs(v[0]); if(fabs(v[0]) > max_x) max_x = fabs(v[0]);
if(fabs(v[1]) > max_y) max_y = fabs(v[1]); if(fabs(v[1]) > max_y) max_y = fabs(v[1]);
if(fabs(v[2]) > max_z) max_z = fabs(v[2]); if(fabs(v[2]) > max_z) max_z = fabs(v[2]);
...@@ -1172,13 +1172,13 @@ HRESULT tesselate_rectpatch(IWineD3DDeviceImpl *This, ...@@ -1172,13 +1172,13 @@ HRESULT tesselate_rectpatch(IWineD3DDeviceImpl *This,
glMap2f(GL_MAP2_VERTEX_3, glMap2f(GL_MAP2_VERTEX_3,
0, 1, vtxStride / sizeof(float), info->Width, 0, 1, vtxStride / sizeof(float), info->Width,
0, 1, info->Stride * vtxStride / sizeof(float), info->Height, 0, 1, info->Stride * vtxStride / sizeof(float), info->Height,
(float *) data); (const GLfloat *)data);
checkGLcall("glMap2f"); checkGLcall("glMap2f");
if(patch->has_texcoords) { if(patch->has_texcoords) {
glMap2f(GL_MAP2_TEXTURE_COORD_4, glMap2f(GL_MAP2_TEXTURE_COORD_4,
0, 1, vtxStride / sizeof(float), info->Width, 0, 1, vtxStride / sizeof(float), info->Width,
0, 1, info->Stride * vtxStride / sizeof(float), info->Height, 0, 1, info->Stride * vtxStride / sizeof(float), info->Height,
(float *) data); (const GLfloat *)data);
checkGLcall("glMap2f"); checkGLcall("glMap2f");
} }
glMapGrid2f(ceilf(patch->numSegs[0]), 0.0, 1.0, ceilf(patch->numSegs[1]), 0.0, 1.0); glMapGrid2f(ceilf(patch->numSegs[0]), 0.0, 1.0, ceilf(patch->numSegs[1]), 0.0, 1.0);
......
...@@ -3999,7 +3999,7 @@ static inline void loadNumberedArrays(IWineD3DStateBlockImpl *stateblock, WineDi ...@@ -3999,7 +3999,7 @@ static inline void loadNumberedArrays(IWineD3DStateBlockImpl *stateblock, WineDi
/* Stride = 0 means always the same values. glVertexAttribPointerARB doesn't do that. Instead disable the pointer and /* Stride = 0 means always the same values. glVertexAttribPointerARB doesn't do that. Instead disable the pointer and
* set up the attribute statically. But we have to figure out the system memory address. * set up the attribute statically. But we have to figure out the system memory address.
*/ */
BYTE *ptr = strided->u.input[i].lpData + offset[strided->u.input[i].streamNo]; const BYTE *ptr = strided->u.input[i].lpData + offset[strided->u.input[i].streamNo];
if(strided->u.input[i].VBO) { if(strided->u.input[i].VBO) {
vb = (IWineD3DVertexBufferImpl *) stateblock->streamSource[strided->u.input[i].streamNo]; vb = (IWineD3DVertexBufferImpl *) stateblock->streamSource[strided->u.input[i].streamNo];
ptr += (long) vb->resource.allocatedMemory; ptr += (long) vb->resource.allocatedMemory;
...@@ -4008,16 +4008,16 @@ static inline void loadNumberedArrays(IWineD3DStateBlockImpl *stateblock, WineDi ...@@ -4008,16 +4008,16 @@ static inline void loadNumberedArrays(IWineD3DStateBlockImpl *stateblock, WineDi
switch(strided->u.input[i].dwType) { switch(strided->u.input[i].dwType) {
case WINED3DDECLTYPE_FLOAT1: case WINED3DDECLTYPE_FLOAT1:
GL_EXTCALL(glVertexAttrib1fvARB(i, (float *) ptr)); GL_EXTCALL(glVertexAttrib1fvARB(i, (const GLfloat *)ptr));
break; break;
case WINED3DDECLTYPE_FLOAT2: case WINED3DDECLTYPE_FLOAT2:
GL_EXTCALL(glVertexAttrib2fvARB(i, (float *) ptr)); GL_EXTCALL(glVertexAttrib2fvARB(i, (const GLfloat *)ptr));
break; break;
case WINED3DDECLTYPE_FLOAT3: case WINED3DDECLTYPE_FLOAT3:
GL_EXTCALL(glVertexAttrib3fvARB(i, (float *) ptr)); GL_EXTCALL(glVertexAttrib3fvARB(i, (const GLfloat *)ptr));
break; break;
case WINED3DDECLTYPE_FLOAT4: case WINED3DDECLTYPE_FLOAT4:
GL_EXTCALL(glVertexAttrib4fvARB(i, (float *) ptr)); GL_EXTCALL(glVertexAttrib4fvARB(i, (const GLfloat *)ptr));
break; break;
case WINED3DDECLTYPE_UBYTE4: case WINED3DDECLTYPE_UBYTE4:
...@@ -4029,38 +4029,38 @@ static inline void loadNumberedArrays(IWineD3DStateBlockImpl *stateblock, WineDi ...@@ -4029,38 +4029,38 @@ static inline void loadNumberedArrays(IWineD3DStateBlockImpl *stateblock, WineDi
break; break;
case WINED3DDECLTYPE_SHORT2: case WINED3DDECLTYPE_SHORT2:
GL_EXTCALL(glVertexAttrib4svARB(i, (GLshort *) ptr)); GL_EXTCALL(glVertexAttrib4svARB(i, (const GLshort *)ptr));
break; break;
case WINED3DDECLTYPE_SHORT4: case WINED3DDECLTYPE_SHORT4:
GL_EXTCALL(glVertexAttrib4svARB(i, (GLshort *) ptr)); GL_EXTCALL(glVertexAttrib4svARB(i, (const GLshort *)ptr));
break; break;
case WINED3DDECLTYPE_SHORT2N: case WINED3DDECLTYPE_SHORT2N:
{ {
GLshort s[4] = {((short *) ptr)[0], ((short *) ptr)[1], 0, 1}; GLshort s[4] = {((const GLshort *)ptr)[0], ((const GLshort *)ptr)[1], 0, 1};
GL_EXTCALL(glVertexAttrib4NsvARB(i, s)); GL_EXTCALL(glVertexAttrib4NsvARB(i, s));
break; break;
} }
case WINED3DDECLTYPE_USHORT2N: case WINED3DDECLTYPE_USHORT2N:
{ {
GLushort s[4] = {((unsigned short *) ptr)[0], ((unsigned short *) ptr)[1], 0, 1}; GLushort s[4] = {((const GLushort *)ptr)[0], ((const GLushort *)ptr)[1], 0, 1};
GL_EXTCALL(glVertexAttrib4NusvARB(i, s)); GL_EXTCALL(glVertexAttrib4NusvARB(i, s));
break; break;
} }
case WINED3DDECLTYPE_SHORT4N: case WINED3DDECLTYPE_SHORT4N:
GL_EXTCALL(glVertexAttrib4NsvARB(i, (GLshort *) ptr)); GL_EXTCALL(glVertexAttrib4NsvARB(i, (const GLshort *)ptr));
break; break;
case WINED3DDECLTYPE_USHORT4N: case WINED3DDECLTYPE_USHORT4N:
GL_EXTCALL(glVertexAttrib4NusvARB(i, (GLushort *) ptr)); GL_EXTCALL(glVertexAttrib4NusvARB(i, (const GLushort *)ptr));
break; break;
case WINED3DDECLTYPE_UDEC3: case WINED3DDECLTYPE_UDEC3:
FIXME("Unsure about WINED3DDECLTYPE_UDEC3\n"); FIXME("Unsure about WINED3DDECLTYPE_UDEC3\n");
/*glVertexAttrib3usvARB(i, (GLushort *) ptr); Does not exist */ /*glVertexAttrib3usvARB(i, (const GLushort *)ptr); Does not exist */
break; break;
case WINED3DDECLTYPE_DEC3N: case WINED3DDECLTYPE_DEC3N:
FIXME("Unsure about WINED3DDECLTYPE_DEC3N\n"); FIXME("Unsure about WINED3DDECLTYPE_DEC3N\n");
/*glVertexAttrib3NusvARB(i, (GLushort *) ptr); Does not exist */ /*glVertexAttrib3NusvARB(i, (const GLushort *)ptr); Does not exist */
break; break;
case WINED3DDECLTYPE_FLOAT16_2: case WINED3DDECLTYPE_FLOAT16_2:
......
...@@ -1850,7 +1850,7 @@ typedef struct glDescriptor ...@@ -1850,7 +1850,7 @@ typedef struct glDescriptor
typedef struct WineDirect3DStridedData typedef struct WineDirect3DStridedData
{ {
BYTE *lpData; /* Pointer to start of data */ const BYTE *lpData; /* Pointer to start of data */
DWORD dwStride; /* Stride between occurrences of this data */ DWORD dwStride; /* Stride between occurrences of this data */
DWORD dwType; /* Type (as in D3DVSDT_TYPE) */ DWORD dwType; /* Type (as in D3DVSDT_TYPE) */
int VBO; /* Vertex buffer object this data is in */ int VBO; /* Vertex buffer object this data is in */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment