summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qcommon/q_shared.h6
-rw-r--r--src/renderer/tr_backend.c2
-rw-r--r--src/renderer/tr_cmds.c1
-rw-r--r--src/renderer/tr_init.c4
-rw-r--r--src/renderer/tr_shader.c2
5 files changed, 11 insertions, 4 deletions
diff --git a/src/qcommon/q_shared.h b/src/qcommon/q_shared.h
index cdb96b11..a8da077d 100644
--- a/src/qcommon/q_shared.h
+++ b/src/qcommon/q_shared.h
@@ -170,8 +170,10 @@ typedef int sfxHandle_t;
typedef int fileHandle_t;
typedef int clipHandle_t;
-#define PAD(x,y) (((x)+(y)-1) & ~((y)-1))
-#define PADLEN(x,y) (PAD((x), (y)) - (x))
+#define PAD(base, alignment) (((base)+(alignment)-1) & ~((alignment)-1))
+#define PADLEN(base, alignment) (PAD((base), (alignment)) - (base))
+
+#define PADP(base, alignment) ((void *) PAD((intptr_t) (base), (alignment)))
#ifdef __GNUC__
#define QALIGN(x) __attribute__((aligned(x)))
diff --git a/src/renderer/tr_backend.c b/src/renderer/tr_backend.c
index 54431ab8..704d947f 100644
--- a/src/renderer/tr_backend.c
+++ b/src/renderer/tr_backend.c
@@ -1143,6 +1143,8 @@ void RB_ExecuteRenderCommands( const void *data ) {
}
while ( 1 ) {
+ data = PADP(data, sizeof(void *));
+
switch ( *(const int *)data ) {
case RC_SET_COLOR:
data = RB_SetColor( data );
diff --git a/src/renderer/tr_cmds.c b/src/renderer/tr_cmds.c
index 833c0f07..3958a718 100644
--- a/src/renderer/tr_cmds.c
+++ b/src/renderer/tr_cmds.c
@@ -196,6 +196,7 @@ void *R_GetCommandBuffer( int bytes ) {
renderCommandList_t *cmdList;
cmdList = &backEndData[tr.smpFrame]->commands;
+ bytes = PAD(bytes, sizeof(void *));
// always leave room for the end of list command
if ( cmdList->used + bytes + 4 > MAX_RENDER_COMMANDS ) {
diff --git a/src/renderer/tr_init.c b/src/renderer/tr_init.c
index 10ea222c..7715cd7f 100644
--- a/src/renderer/tr_init.c
+++ b/src/renderer/tr_init.c
@@ -394,7 +394,7 @@ byte *RB_ReadPixels(int x, int y, int width, int height, size_t *offset, int *pa
// Allocate a few more bytes so that we can choose an alignment we like
buffer = ri.Hunk_AllocateTempMemory(padwidth * height + *offset + packAlign - 1);
- bufstart = (byte *) PAD((intptr_t) buffer + *offset, packAlign);
+ bufstart = PADP((intptr_t) buffer + *offset, packAlign);
qglReadPixels(x, y, width, height, GL_RGB, GL_UNSIGNED_BYTE, bufstart);
*offset = bufstart - buffer;
@@ -792,7 +792,7 @@ const void *RB_TakeVideoFrameCmd( const void *data )
avipadwidth = PAD(linelen, AVI_LINE_PADDING);
avipadlen = avipadwidth - linelen;
- cBuf = (byte *) PAD((intptr_t) cmd->captureBuffer, packAlign);
+ cBuf = PADP(cmd->captureBuffer, packAlign);
qglReadPixels(0, 0, cmd->width, cmd->height, GL_RGB,
GL_UNSIGNED_BYTE, cBuf);
diff --git a/src/renderer/tr_shader.c b/src/renderer/tr_shader.c
index 22e340c6..4b2452e2 100644
--- a/src/renderer/tr_shader.c
+++ b/src/renderer/tr_shader.c
@@ -1879,6 +1879,8 @@ static void FixRenderCommandList( int newShader ) {
const void *curCmd = cmdList->cmds;
while ( 1 ) {
+ curCmd = PADP(curCmd, sizeof(void *));
+
switch ( *(const int *)curCmd ) {
case RC_SET_COLOR:
{