mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2024-12-03 09:22:45 +00:00
More Linux specific fixes, especially 64 bit
This commit is contained in:
parent
55cc6b3946
commit
948865123d
13 changed files with 172 additions and 48 deletions
|
@ -175,9 +175,17 @@ void idCommonLocal::VPrintf( const char* fmt, va_list args )
|
|||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if( !idLib::IsMainThread() )
|
||||
{
|
||||
// RB: printf should be thread-safe on Linux
|
||||
#if defined(_WIN32)
|
||||
OutputDebugString( msg );
|
||||
#else
|
||||
printf( msg );
|
||||
#endif
|
||||
// RB end
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -448,7 +456,9 @@ void idCommonLocal::DumpWarnings()
|
|||
|
||||
fileSystem->CloseFile( warningFile );
|
||||
|
||||
#ifndef ID_DEBUG
|
||||
// RB begin
|
||||
#if defined(_WIN32) && !defined(_DEBUG)
|
||||
// RB end
|
||||
idStr osPath;
|
||||
osPath = fileSystem->RelativePathToOSPath( "warnings.txt", "fs_savepath" );
|
||||
WinExec( va( "Notepad.exe %s", osPath.c_str() ), SW_SHOW );
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
Doom 3 BFG Edition GPL Source Code
|
||||
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
||||
Copyright (C) 2012 Robert Beckebans
|
||||
|
||||
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
||||
|
||||
|
@ -369,6 +370,8 @@ idKeyInput::LocalizedKeyName
|
|||
*/
|
||||
const char* idKeyInput::LocalizedKeyName( keyNum_t keynum )
|
||||
{
|
||||
// RB: FIXME
|
||||
#if defined(_WIN32)
|
||||
if( keynum < K_JOY1 )
|
||||
{
|
||||
// On the PC, we want to turn the scan code in to a key label that matches the currently selected keyboard layout
|
||||
|
@ -400,6 +403,10 @@ const char* idKeyInput::LocalizedKeyName( keyNum_t keynum )
|
|||
}
|
||||
}
|
||||
return "????";
|
||||
#else
|
||||
return KeyNumToString( keynum );
|
||||
#endif
|
||||
// RB end
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1479,6 +1479,8 @@ idZipBuilder::GetFileTime
|
|||
*/
|
||||
bool idZipBuilder::GetFileTime( const idStr& filename, unsigned long* dostime ) const
|
||||
{
|
||||
// RB: FIXME
|
||||
#if defined(_WIN32)
|
||||
{
|
||||
FILETIME filetime;
|
||||
WIN32_FIND_DATA fileData;
|
||||
|
@ -1492,6 +1494,9 @@ bool idZipBuilder::GetFileTime( const idStr& filename, unsigned long* dostime )
|
|||
}
|
||||
FindClose( findHandle );
|
||||
}
|
||||
#endif
|
||||
// RB end
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -143,6 +143,8 @@ If you have questions concerning this license or the applicable additional terms
|
|||
// DG end
|
||||
|
||||
#define ID_HDRSTOP
|
||||
#define CALLBACK
|
||||
#define __cdecl
|
||||
|
||||
#endif
|
||||
// RB end
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
Doom 3 BFG Edition GPL Source Code
|
||||
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
||||
Copyright (C) 2012 Robert Beckebans
|
||||
|
||||
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
||||
|
||||
|
@ -35,6 +36,8 @@ idCVar r_showBuffers( "r_showBuffers", "0", CVAR_INTEGER, "" );
|
|||
//static const GLenum bufferUsage = GL_STATIC_DRAW_ARB;
|
||||
static const GLenum bufferUsage = GL_DYNAMIC_DRAW_ARB;
|
||||
|
||||
// RB begin
|
||||
#if defined(_WIN32)
|
||||
/*
|
||||
==================
|
||||
IsWriteCombined
|
||||
|
@ -53,7 +56,8 @@ bool IsWriteCombined( void* base )
|
|||
bool isWriteCombined = ( ( info.AllocationProtect & PAGE_WRITECOMBINE ) != 0 );
|
||||
return isWriteCombined;
|
||||
}
|
||||
|
||||
#endif
|
||||
// RB end
|
||||
|
||||
|
||||
/*
|
||||
|
@ -237,8 +241,10 @@ void idVertexBuffer::FreeBufferObject()
|
|||
idLib::Printf( "vertex buffer free %p, api %p (%i bytes)\n", this, GetAPIObject(), GetSize() );
|
||||
}
|
||||
|
||||
GLuint bufferObject = reinterpret_cast< GLuint >( apiObject );
|
||||
qglDeleteBuffersARB( 1, & bufferObject );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
GLintptrARB bufferObject = reinterpret_cast< GLintptrARB >( apiObject );
|
||||
qglDeleteBuffersARB( 1, (const unsigned int*) & bufferObject );
|
||||
// RB end
|
||||
|
||||
ClearWithoutFreeing();
|
||||
}
|
||||
|
@ -302,7 +308,10 @@ void idVertexBuffer::Update( const void* data, int updateSize ) const
|
|||
|
||||
int numBytes = ( updateSize + 15 ) & ~15;
|
||||
|
||||
GLuint bufferObject = reinterpret_cast< GLuint >( apiObject );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
GLintptrARB bufferObject = reinterpret_cast< GLintptrARB >( apiObject );
|
||||
// RB end
|
||||
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, bufferObject );
|
||||
qglBufferSubDataARB( GL_ARRAY_BUFFER_ARB, GetOffset(), ( GLsizeiptrARB )numBytes, data );
|
||||
/*
|
||||
|
@ -324,7 +333,10 @@ void* idVertexBuffer::MapBuffer( bufferMapType_t mapType ) const
|
|||
|
||||
void* buffer = NULL;
|
||||
|
||||
GLuint bufferObject = reinterpret_cast< GLuint >( apiObject );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
GLintptrARB bufferObject = reinterpret_cast< GLintptrARB >( apiObject );
|
||||
// RB end
|
||||
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, bufferObject );
|
||||
if( mapType == BM_READ )
|
||||
{
|
||||
|
@ -369,7 +381,10 @@ void idVertexBuffer::UnmapBuffer() const
|
|||
assert( apiObject != NULL );
|
||||
assert( IsMapped() );
|
||||
|
||||
GLuint bufferObject = reinterpret_cast< GLuint >( apiObject );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
GLintptrARB bufferObject = reinterpret_cast< GLintptrARB >( apiObject );
|
||||
// RB end
|
||||
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, bufferObject );
|
||||
if( !qglUnmapBufferARB( GL_ARRAY_BUFFER_ARB ) )
|
||||
{
|
||||
|
@ -511,8 +526,10 @@ void idIndexBuffer::FreeBufferObject()
|
|||
idLib::Printf( "index buffer free %p, api %p (%i bytes)\n", this, GetAPIObject(), GetSize() );
|
||||
}
|
||||
|
||||
GLuint bufferObject = reinterpret_cast< GLuint >( apiObject );
|
||||
qglDeleteBuffersARB( 1, & bufferObject );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
GLintptrARB bufferObject = reinterpret_cast< GLintptrARB >( apiObject );
|
||||
qglDeleteBuffersARB( 1, ( const unsigned int* )& bufferObject );
|
||||
// RB end
|
||||
|
||||
ClearWithoutFreeing();
|
||||
}
|
||||
|
@ -577,7 +594,10 @@ void idIndexBuffer::Update( const void* data, int updateSize ) const
|
|||
|
||||
int numBytes = ( updateSize + 15 ) & ~15;
|
||||
|
||||
GLuint bufferObject = reinterpret_cast< GLuint >( apiObject );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
GLintptrARB bufferObject = reinterpret_cast< GLintptrARB >( apiObject );
|
||||
// RB end
|
||||
|
||||
qglBindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, bufferObject );
|
||||
qglBufferSubDataARB( GL_ELEMENT_ARRAY_BUFFER_ARB, GetOffset(), ( GLsizeiptrARB )numBytes, data );
|
||||
/*
|
||||
|
@ -600,7 +620,10 @@ void* idIndexBuffer::MapBuffer( bufferMapType_t mapType ) const
|
|||
|
||||
void* buffer = NULL;
|
||||
|
||||
GLuint bufferObject = reinterpret_cast< GLuint >( apiObject );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
GLintptrARB bufferObject = reinterpret_cast< GLintptrARB >( apiObject );
|
||||
// RB end
|
||||
|
||||
qglBindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, bufferObject );
|
||||
if( mapType == BM_READ )
|
||||
{
|
||||
|
@ -645,7 +668,10 @@ void idIndexBuffer::UnmapBuffer() const
|
|||
assert( apiObject != NULL );
|
||||
assert( IsMapped() );
|
||||
|
||||
GLuint bufferObject = reinterpret_cast< GLuint >( apiObject );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
GLintptrARB bufferObject = reinterpret_cast< GLintptrARB >( apiObject );
|
||||
// RB end
|
||||
|
||||
qglBindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, bufferObject );
|
||||
if( !qglUnmapBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB ) )
|
||||
{
|
||||
|
@ -769,9 +795,12 @@ void idJointBuffer::FreeBufferObject()
|
|||
idLib::Printf( "joint buffer free %p, api %p (%i joints)\n", this, GetAPIObject(), GetNumJoints() );
|
||||
}
|
||||
|
||||
GLuint buffer = reinterpret_cast< GLuint >( apiObject );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
GLintptrARB buffer = reinterpret_cast< GLintptrARB >( apiObject );
|
||||
|
||||
qglBindBufferARB( GL_UNIFORM_BUFFER, 0 );
|
||||
qglDeleteBuffersARB( 1, & buffer );
|
||||
qglDeleteBuffersARB( 1, (const GLuint*)& buffer );
|
||||
// RB end
|
||||
|
||||
ClearWithoutFreeing();
|
||||
}
|
||||
|
@ -836,7 +865,10 @@ void idJointBuffer::Update( const float* joints, int numUpdateJoints ) const
|
|||
|
||||
const int numBytes = numUpdateJoints * 3 * 4 * sizeof( float );
|
||||
|
||||
qglBindBufferARB( GL_UNIFORM_BUFFER, reinterpret_cast< GLuint >( apiObject ) );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
qglBindBufferARB( GL_UNIFORM_BUFFER, reinterpret_cast< GLintptrARB >( apiObject ) );
|
||||
// RB end
|
||||
|
||||
qglBufferSubDataARB( GL_UNIFORM_BUFFER, GetOffset(), ( GLsizeiptrARB )numBytes, joints );
|
||||
}
|
||||
|
||||
|
@ -855,7 +887,10 @@ float* idJointBuffer::MapBuffer( bufferMapType_t mapType ) const
|
|||
|
||||
void* buffer = NULL;
|
||||
|
||||
qglBindBufferARB( GL_UNIFORM_BUFFER, reinterpret_cast< GLuint >( apiObject ) );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
qglBindBufferARB( GL_UNIFORM_BUFFER, reinterpret_cast< GLintptrARB >( apiObject ) );
|
||||
// RB end
|
||||
|
||||
numBytes = numBytes;
|
||||
assert( GetOffset() == 0 );
|
||||
//buffer = qglMapBufferARB( GL_UNIFORM_BUFFER, GL_WRITE_ONLY_ARB );
|
||||
|
@ -884,7 +919,10 @@ void idJointBuffer::UnmapBuffer() const
|
|||
assert( apiObject != NULL );
|
||||
assert( IsMapped() );
|
||||
|
||||
qglBindBufferARB( GL_UNIFORM_BUFFER, reinterpret_cast< GLuint >( apiObject ) );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
qglBindBufferARB( GL_UNIFORM_BUFFER, reinterpret_cast< GLintptrARB >( apiObject ) );
|
||||
// RB end
|
||||
|
||||
if( !qglUnmapBufferARB( GL_UNIFORM_BUFFER ) )
|
||||
{
|
||||
idLib::Printf( "idJointBuffer::UnmapBuffer failed\n" );
|
||||
|
|
|
@ -2835,7 +2835,7 @@ int lwResolvePolySurfaces( lwPolygonList* polygon, lwTagList* tlist,
|
|||
lwSurface** surf, int* nsurfs )
|
||||
{
|
||||
lwSurface** s, *st;
|
||||
int i, index;
|
||||
int i;
|
||||
|
||||
if( tlist->count == 0 ) return 1;
|
||||
|
||||
|
@ -2855,10 +2855,13 @@ int lwResolvePolySurfaces( lwPolygonList* polygon, lwTagList* tlist,
|
|||
st = st->next;
|
||||
}
|
||||
}
|
||||
|
||||
// RB: 64 bit fixes
|
||||
uintptr_t index;
|
||||
for( i = 0; i < polygon->count; i++ )
|
||||
{
|
||||
index = ( int ) polygon->pol[ i ].surf;
|
||||
index = ( uintptr_t ) polygon->pol[ i ].surf;
|
||||
// RB end
|
||||
|
||||
if( index < 0 || index > tlist->count ) return 0;
|
||||
if( !s[ index ] )
|
||||
{
|
||||
|
|
|
@ -488,12 +488,24 @@ void idImage::AllocImage()
|
|||
// As of 2011-10-6 using NVIDIA hardware and drivers we have to allocate the memory with HeapAlloc
|
||||
// with the exact size otherwise large image allocation (for instance for physical page textures)
|
||||
// may fail on Vista 32-bit.
|
||||
|
||||
// RB begin
|
||||
#if defined(_WIN32)
|
||||
void* data = HeapAlloc( GetProcessHeap(), 0, compressedSize );
|
||||
qglCompressedTexImage2DARB( uploadTarget + side, level, internalFormat, w, h, 0, compressedSize, data );
|
||||
if( data != NULL )
|
||||
{
|
||||
HeapFree( GetProcessHeap(), 0, data );
|
||||
}
|
||||
#else
|
||||
byte* data = ( byte* )Mem_Alloc( compressedSize, TAG_TEMP );
|
||||
qglCompressedTexImage2DARB( uploadTarget + side, level, internalFormat, w, h, 0, compressedSize, data );
|
||||
if( data != NULL )
|
||||
{
|
||||
Mem_Free( data );
|
||||
}
|
||||
#endif
|
||||
// RB end
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -733,7 +733,10 @@ void idRenderSystemLocal::SwapCommandBuffers_FinishRendering(
|
|||
// read back the start and end timer queries from the previous frame
|
||||
if( glConfig.timerQueryAvailable )
|
||||
{
|
||||
uint64 drawingTimeNanoseconds = 0;
|
||||
// RB: 64 bit fixes, changed int64 to GLuint64EXT
|
||||
GLuint64EXT drawingTimeNanoseconds = 0;
|
||||
// RB end
|
||||
|
||||
if( tr.timerQueryId != 0 )
|
||||
{
|
||||
qglGetQueryObjectui64vEXT( tr.timerQueryId, GL_QUERY_RESULT, &drawingTimeNanoseconds );
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
Doom 3 BFG Edition GPL Source Code
|
||||
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
||||
Copyright (C) 2012 Robert Beckebans
|
||||
|
||||
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
||||
|
||||
|
@ -31,8 +32,13 @@ If you have questions concerning this license or the applicable additional terms
|
|||
|
||||
#include "tr_local.h"
|
||||
|
||||
// RB begin
|
||||
#if defined(_WIN32)
|
||||
|
||||
// Vista OpenGL wrapper check
|
||||
#include "../sys/win32/win_local.h"
|
||||
#endif
|
||||
// RB end
|
||||
|
||||
// DeviceContext bypasses RenderSystem to work directly with this
|
||||
idGuiModel* tr_guiModel;
|
||||
|
@ -195,7 +201,9 @@ idCVar stereoRender_deGhost( "stereoRender_deGhost", "0.05", CVAR_FLOAT | CVAR_A
|
|||
|
||||
// GL_ARB_multitexture
|
||||
PFNGLACTIVETEXTUREPROC qglActiveTextureARB;
|
||||
PFNGLCLIENTACTIVETEXTUREPROC qglClientActiveTextureARB;
|
||||
// RB: deprecated
|
||||
//PFNGLCLIENTACTIVETEXTUREPROC qglClientActiveTextureARB;
|
||||
// RB end
|
||||
|
||||
// GL_EXT_direct_state_access
|
||||
PFNGLBINDMULTITEXTUREEXTPROC qglBindMultiTextureEXT;
|
||||
|
@ -319,7 +327,9 @@ void APIENTRY glBindMultiTextureEXT( GLenum texunit, GLenum target, GLuint textu
|
|||
R_CheckExtension
|
||||
=================
|
||||
*/
|
||||
bool R_CheckExtension( char* name )
|
||||
// RB begin
|
||||
static bool R_CheckExtension( const char* name )
|
||||
// RB end
|
||||
{
|
||||
if( !strstr( glConfig.extensions_string, name ) )
|
||||
{
|
||||
|
@ -343,8 +353,15 @@ static void CALLBACK DebugCallback( unsigned int source, unsigned int type,
|
|||
unsigned int id, unsigned int severity, int length, const char* message, void* userParam )
|
||||
{
|
||||
// it probably isn't safe to do an idLib::Printf at this point
|
||||
|
||||
// RB begin
|
||||
#if defined(_WIN32)
|
||||
OutputDebugString( message );
|
||||
OutputDebugString( "\n" );
|
||||
#else
|
||||
printf( "%s\n", message );
|
||||
#endif
|
||||
// RB end
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -379,7 +396,9 @@ static void R_CheckPortableExtensions()
|
|||
if( glConfig.multitextureAvailable )
|
||||
{
|
||||
qglActiveTextureARB = ( void( APIENTRY* )( GLenum ) )GLimp_ExtensionPointer( "glActiveTextureARB" );
|
||||
qglClientActiveTextureARB = ( void( APIENTRY* )( GLenum ) )GLimp_ExtensionPointer( "glClientActiveTextureARB" );
|
||||
// RB: deprecated
|
||||
//qglClientActiveTextureARB = ( void( APIENTRY* )( GLenum ) )GLimp_ExtensionPointer( "glClientActiveTextureARB" );
|
||||
// RB end
|
||||
}
|
||||
|
||||
// GL_EXT_direct_state_access
|
||||
|
@ -919,6 +938,8 @@ void R_InitOpenGL()
|
|||
// Reset our gamma
|
||||
R_SetColorMappings();
|
||||
|
||||
// RB begin
|
||||
#if defined(_WIN32)
|
||||
static bool glCheck = false;
|
||||
if( !glCheck && win32.osversion.dwMajorVersion == 6 )
|
||||
{
|
||||
|
@ -943,6 +964,8 @@ void R_InitOpenGL()
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// RB end
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1849,6 +1872,8 @@ void GfxInfo_f( const idCmdArgs& args )
|
|||
|
||||
common->Printf( "-------\n" );
|
||||
|
||||
// RB begin
|
||||
#if defined(_WIN32)
|
||||
// WGL_EXT_swap_interval
|
||||
typedef BOOL ( WINAPI * PFNWGLSWAPINTERVALEXTPROC )( int interval );
|
||||
extern PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT;
|
||||
|
@ -1861,6 +1886,8 @@ void GfxInfo_f( const idCmdArgs& args )
|
|||
{
|
||||
common->Printf( "swapInterval not forced\n" );
|
||||
}
|
||||
#endif
|
||||
// RB end
|
||||
|
||||
if( glConfig.stereoPixelFormatAvailable && glConfig.isStereoPixelFormat )
|
||||
{
|
||||
|
|
|
@ -170,7 +170,9 @@ void RB_DrawElementsWithCounters( const drawSurf_t* surf )
|
|||
}
|
||||
indexBuffer = &vertexCache.frameData[vertexCache.drawListNum].indexBuffer;
|
||||
}
|
||||
const int indexOffset = ( int )( ibHandle >> VERTCACHE_OFFSET_SHIFT ) & VERTCACHE_OFFSET_MASK;
|
||||
// RB: 64 bit fixes, changed int to GLintptrARB
|
||||
const GLintptrARB indexOffset = ( GLintptrARB )( ibHandle >> VERTCACHE_OFFSET_SHIFT ) & VERTCACHE_OFFSET_MASK;
|
||||
// RB end
|
||||
|
||||
RENDERLOG_PRINTF( "Binding Buffers: %p:%i %p:%i\n", vertexBuffer, vertOffset, indexBuffer, indexOffset );
|
||||
|
||||
|
@ -200,22 +202,26 @@ void RB_DrawElementsWithCounters( const drawSurf_t* surf )
|
|||
}
|
||||
assert( ( jointBuffer.GetOffset() & ( glConfig.uniformBufferOffsetAlignment - 1 ) ) == 0 );
|
||||
|
||||
const GLuint ubo = reinterpret_cast< GLuint >( jointBuffer.GetAPIObject() );
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
const GLintptrARB ubo = reinterpret_cast< GLintptrARB >( jointBuffer.GetAPIObject() );
|
||||
// RB end
|
||||
|
||||
qglBindBufferRange( GL_UNIFORM_BUFFER, 0, ubo, jointBuffer.GetOffset(), jointBuffer.GetNumJoints() * sizeof( idJointMat ) );
|
||||
}
|
||||
|
||||
renderProgManager.CommitUniforms();
|
||||
|
||||
if( backEnd.glState.currentIndexBuffer != ( GLuint )indexBuffer->GetAPIObject() || !r_useStateCaching.GetBool() )
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
if( backEnd.glState.currentIndexBuffer != ( GLintptrARB )indexBuffer->GetAPIObject() || !r_useStateCaching.GetBool() )
|
||||
{
|
||||
qglBindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, ( GLuint )indexBuffer->GetAPIObject() );
|
||||
backEnd.glState.currentIndexBuffer = ( GLuint )indexBuffer->GetAPIObject();
|
||||
qglBindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, ( GLintptrARB )indexBuffer->GetAPIObject() );
|
||||
backEnd.glState.currentIndexBuffer = ( GLintptrARB )indexBuffer->GetAPIObject();
|
||||
}
|
||||
|
||||
if( ( backEnd.glState.vertexLayout != LAYOUT_DRAW_VERT ) || ( backEnd.glState.currentVertexBuffer != ( GLuint )vertexBuffer->GetAPIObject() ) || !r_useStateCaching.GetBool() )
|
||||
if( ( backEnd.glState.vertexLayout != LAYOUT_DRAW_VERT ) || ( backEnd.glState.currentVertexBuffer != ( GLintptrARB )vertexBuffer->GetAPIObject() ) || !r_useStateCaching.GetBool() )
|
||||
{
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, ( GLuint )vertexBuffer->GetAPIObject() );
|
||||
backEnd.glState.currentVertexBuffer = ( GLuint )vertexBuffer->GetAPIObject();
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, ( GLintptrARB )vertexBuffer->GetAPIObject() );
|
||||
backEnd.glState.currentVertexBuffer = ( GLintptrARB )vertexBuffer->GetAPIObject();
|
||||
|
||||
qglEnableVertexAttribArrayARB( PC_ATTRIB_INDEX_VERTEX );
|
||||
qglEnableVertexAttribArrayARB( PC_ATTRIB_INDEX_NORMAL );
|
||||
|
@ -233,6 +239,7 @@ void RB_DrawElementsWithCounters( const drawSurf_t* surf )
|
|||
|
||||
backEnd.glState.vertexLayout = LAYOUT_DRAW_VERT;
|
||||
}
|
||||
// RB end
|
||||
|
||||
qglDrawElementsBaseVertex( GL_TRIANGLES,
|
||||
r_singleTriangle.GetBool() ? 3 : surf->numIndexes,
|
||||
|
@ -1713,11 +1720,11 @@ static void RB_StencilShadowPass( const drawSurf_t* drawSurfs, const viewLight_t
|
|||
|
||||
RENDERLOG_PRINTF( "Binding Buffers: %p %p\n", vertexBuffer, indexBuffer );
|
||||
|
||||
|
||||
if( backEnd.glState.currentIndexBuffer != ( GLuint )indexBuffer->GetAPIObject() || !r_useStateCaching.GetBool() )
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
if( backEnd.glState.currentIndexBuffer != ( GLintptrARB )indexBuffer->GetAPIObject() || !r_useStateCaching.GetBool() )
|
||||
{
|
||||
qglBindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, ( GLuint )indexBuffer->GetAPIObject() );
|
||||
backEnd.glState.currentIndexBuffer = ( GLuint )indexBuffer->GetAPIObject();
|
||||
qglBindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, ( GLintptrARB )indexBuffer->GetAPIObject() );
|
||||
backEnd.glState.currentIndexBuffer = ( GLintptrARB )indexBuffer->GetAPIObject();
|
||||
}
|
||||
|
||||
if( drawSurf->jointCache )
|
||||
|
@ -1732,13 +1739,13 @@ static void RB_StencilShadowPass( const drawSurf_t* drawSurfs, const viewLight_t
|
|||
}
|
||||
assert( ( jointBuffer.GetOffset() & ( glConfig.uniformBufferOffsetAlignment - 1 ) ) == 0 );
|
||||
|
||||
const GLuint ubo = reinterpret_cast< GLuint >( jointBuffer.GetAPIObject() );
|
||||
const GLintptrARB ubo = reinterpret_cast< GLintptrARB >( jointBuffer.GetAPIObject() );
|
||||
qglBindBufferRange( GL_UNIFORM_BUFFER, 0, ubo, jointBuffer.GetOffset(), jointBuffer.GetNumJoints() * sizeof( idJointMat ) );
|
||||
|
||||
if( ( backEnd.glState.vertexLayout != LAYOUT_DRAW_SHADOW_VERT_SKINNED ) || ( backEnd.glState.currentVertexBuffer != ( GLuint )vertexBuffer->GetAPIObject() ) || !r_useStateCaching.GetBool() )
|
||||
if( ( backEnd.glState.vertexLayout != LAYOUT_DRAW_SHADOW_VERT_SKINNED ) || ( backEnd.glState.currentVertexBuffer != ( GLintptrARB )vertexBuffer->GetAPIObject() ) || !r_useStateCaching.GetBool() )
|
||||
{
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, ( GLuint )vertexBuffer->GetAPIObject() );
|
||||
backEnd.glState.currentVertexBuffer = ( GLuint )vertexBuffer->GetAPIObject();
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, ( GLintptrARB )vertexBuffer->GetAPIObject() );
|
||||
backEnd.glState.currentVertexBuffer = ( GLintptrARB )vertexBuffer->GetAPIObject();
|
||||
|
||||
qglEnableVertexAttribArrayARB( PC_ATTRIB_INDEX_VERTEX );
|
||||
qglDisableVertexAttribArrayARB( PC_ATTRIB_INDEX_NORMAL );
|
||||
|
@ -1758,10 +1765,10 @@ static void RB_StencilShadowPass( const drawSurf_t* drawSurfs, const viewLight_t
|
|||
else
|
||||
{
|
||||
|
||||
if( ( backEnd.glState.vertexLayout != LAYOUT_DRAW_SHADOW_VERT ) || ( backEnd.glState.currentVertexBuffer != ( GLuint )vertexBuffer->GetAPIObject() ) || !r_useStateCaching.GetBool() )
|
||||
if( ( backEnd.glState.vertexLayout != LAYOUT_DRAW_SHADOW_VERT ) || ( backEnd.glState.currentVertexBuffer != ( GLintptrARB )vertexBuffer->GetAPIObject() ) || !r_useStateCaching.GetBool() )
|
||||
{
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, ( GLuint )vertexBuffer->GetAPIObject() );
|
||||
backEnd.glState.currentVertexBuffer = ( GLuint )vertexBuffer->GetAPIObject();
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, ( GLintptrARB )vertexBuffer->GetAPIObject() );
|
||||
backEnd.glState.currentVertexBuffer = ( GLintptrARB )vertexBuffer->GetAPIObject();
|
||||
|
||||
qglEnableVertexAttribArrayARB( PC_ATTRIB_INDEX_VERTEX );
|
||||
qglDisableVertexAttribArrayARB( PC_ATTRIB_INDEX_NORMAL );
|
||||
|
@ -1775,6 +1782,7 @@ static void RB_StencilShadowPass( const drawSurf_t* drawSurfs, const viewLight_t
|
|||
backEnd.glState.vertexLayout = LAYOUT_DRAW_SHADOW_VERT;
|
||||
}
|
||||
}
|
||||
// RB end
|
||||
|
||||
renderProgManager.CommitUniforms();
|
||||
|
||||
|
|
|
@ -796,8 +796,10 @@ static void RB_ShowSilhouette()
|
|||
continue;
|
||||
}
|
||||
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, ( GLuint )vertexBuffer.GetAPIObject() );
|
||||
int vertOffset = vertexBuffer.GetOffset();
|
||||
// RB: 64 bit fixes, changed GLuint to GLintptrARB
|
||||
qglBindBufferARB( GL_ARRAY_BUFFER_ARB, ( GLintptrARB )vertexBuffer.GetAPIObject() );
|
||||
GLintptrARB vertOffset = vertexBuffer.GetOffset();
|
||||
// RB end
|
||||
|
||||
qglVertexPointer( 3, GL_FLOAT, sizeof( idShadowVert ), ( void* )vertOffset );
|
||||
qglBegin( GL_LINES );
|
||||
|
|
|
@ -79,7 +79,11 @@ void R_ToggleSmpFrame()
|
|||
frameData = &smpFrameData[smpFrame % NUM_FRAME_DATA];
|
||||
|
||||
// reset the memory allocation
|
||||
const unsigned int bytesNeededForAlignment = FRAME_ALLOC_ALIGNMENT - ( ( unsigned int )frameData->frameMemory & ( FRAME_ALLOC_ALIGNMENT - 1 ) );
|
||||
|
||||
// RB: 64 bit fixes, changed unsigned int to uintptr_t
|
||||
const uintptr_t bytesNeededForAlignment = FRAME_ALLOC_ALIGNMENT - ( ( uintptr_t )frameData->frameMemory & ( FRAME_ALLOC_ALIGNMENT - 1 ) );
|
||||
// RB end
|
||||
|
||||
frameData->frameMemoryAllocated.SetValue( bytesNeededForAlignment );
|
||||
frameData->frameMemoryUsed.SetValue( 0 );
|
||||
|
||||
|
|
|
@ -645,9 +645,12 @@ struct glstate_t
|
|||
int faceCulling;
|
||||
|
||||
vertexLayoutType_t vertexLayout;
|
||||
unsigned int currentVertexBuffer;
|
||||
unsigned int currentIndexBuffer;
|
||||
|
||||
// RB: 64 bit fixes, changed unsigned int to uintptr_t
|
||||
uintptr_t currentVertexBuffer;
|
||||
uintptr_t currentIndexBuffer;
|
||||
// RB end
|
||||
|
||||
float polyOfsScale;
|
||||
float polyOfsBias;
|
||||
|
||||
|
|
Loading…
Reference in a new issue