Nehe20 Build Fix + Warnings cleanup for GCC14.1.0.

Newest toolchain is bitchier, so I wanted to go ahead and clear up all
of the warnings from building GLdc and the various examples...

1) Set CMake CXX standard to 14 instead of 11, since CXXFLAGS were
  enforcing that language standard anyway.
2) Fixed a bunch of strict aliasing violations in immediate.c: glVertex3f.
3) Removed or commented out lots of unused variables.
4) Fixed some "suggested inner braces on initializer" crap.
5) Fixed a bunch of signed vs unsigned pointer assignments.
6) Fixed several printf() warnings from using %d with int32_t (needs to
   be %ld for long int).
7) Fixed build issue with Nehe20 from not including kos.h for the
   KOS_ROMDISK macro.
8) Fixed some signed vs unsigned comparison mismatches in C++ template
   instantiations within clipping tests.
9)
This commit is contained in:
Falco Girgis 2024-07-31 15:36:19 -05:00
parent a68c4bf6ac
commit 49f2f0917b
16 changed files with 54 additions and 59 deletions

View File

@ -22,7 +22,7 @@ string(TOUPPER ${BACKEND} BACKEND_UPPER)
add_definitions(-DBACKEND_${BACKEND_UPPER})
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD 14)
include_directories(include)

View File

@ -158,6 +158,14 @@ void APIENTRY glColor3fv(const GLfloat* v) {
COLOR[B8IDX] = (GLubyte)(v[2] * 255);
}
typedef union punned {
GLubyte* byte;
GLfloat* flt;
uint32_t* u32;
void* vptr;
uintptr_t uptr;
} punned_t;
void APIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z) {
IM_ENABLED_VERTEX_ATTRIBUTES |= VERTEX_ENABLED_FLAG;
@ -170,18 +178,18 @@ void APIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z) {
IM_ATTRIBS.colour.ptr = IM_ATTRIBS.st.ptr + 8;
IM_ATTRIBS.normal.ptr = IM_ATTRIBS.colour.ptr + 4;
uint32_t* dest = (uint32_t*) &vert->x;
*(dest++) = *((uint32_t*) &x);
*(dest++) = *((uint32_t*) &y);
*(dest++) = *((uint32_t*) &z);
*(dest++) = *((uint32_t*) &UV_COORD[0]);
*(dest++) = *((uint32_t*) &UV_COORD[1]);
*(dest++) = *((uint32_t*) &ST_COORD[0]);
*(dest++) = *((uint32_t*) &ST_COORD[1]);
*(dest++) = *((uint32_t*) COLOR);
*(dest++) = *((uint32_t*) &NORMAL[0]);
*(dest++) = *((uint32_t*) &NORMAL[1]);
*(dest++) = *((uint32_t*) &NORMAL[2]);
punned_t dest = { .flt = &vert->x };
*(dest.flt++) = x;
*(dest.flt++) = y;
*(dest.flt++) = z;
*(dest.flt++) = UV_COORD[0];
*(dest.flt++) = UV_COORD[1];
*(dest.flt++) = ST_COORD[0];
*(dest.flt++) = ST_COORD[1];
*(dest.u32++) = *((uint32_t*)(void*) COLOR);
*(dest.flt++) = NORMAL[0];
*(dest.flt++) = NORMAL[1];
*(dest.flt++) = NORMAL[2];
}
void APIENTRY glVertex3fv(const GLfloat* v) {

View File

@ -80,9 +80,7 @@ static struct {
.color_control = GL_SINGLE_COLOR,
.color_material_mode = GL_AMBIENT_AND_DIFFUSE,
.color_material_mask = AMBIENT_MASK | DIFFUSE_MASK,
.lights = {0},
.enabled_light_count = 0,
.material = {0},
.shade_model = GL_SMOOTH
};

View File

@ -80,7 +80,6 @@ void DrawGLScene()
{
const float RED [] = {1.0, 0, 0, 0.5};
const float BLUE [] = {0.0, 0, 1, 0.5};
const float NONE [] = {0, 0, 0, 0};
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer

View File

@ -48,7 +48,6 @@ int dtex_to_gl_texture(texture *tex, char* filename) {
GLboolean twiddled = (header.type & (1 << 26)) < 1;
GLboolean compressed = (header.type & (1 << 30)) > 0;
GLboolean mipmapped = (header.type & (1 << 31)) > 0;
GLboolean strided = (header.type & (1 << 25)) > 0;
GLuint format = (header.type >> 27) & 0b111;
image->data = (char *) malloc (header.size);

View File

@ -26,7 +26,7 @@ KOS_INIT_ROMDISK(romdisk);
float xrot, yrot, zrot;
/* storage for one texture */
int texture[1];
GLuint texture[1];
// Load Bitmaps And Convert To Textures
void LoadGLTextures() {
@ -81,7 +81,7 @@ void InitGL(int Width, int Height) // We call this right after our OpenG
GLfloat l1_pos[] = {5.0, 0.0, 1.0, 1.0};
GLfloat l1_diff[] = {1.0, 0.0, 0.0, 1.0};
GLfloat l1_amb[] = {0.5, 0.5, 0.5, 1.0};
//GLfloat l1_amb[] = {0.5, 0.5, 0.5, 1.0};
//glLightfv(GL_LIGHT1, GL_AMBIENT, l1_amb);
glLightfv(GL_LIGHT1, GL_DIFFUSE, l1_diff);
@ -93,7 +93,7 @@ void InitGL(int Width, int Height) // We call this right after our OpenG
GLfloat l2_pos[] = {0.0, 15.0, 1.0, 1.0};
GLfloat l2_dir[] = {0.0, -1.0, 0.0};
GLfloat l2_diff[] = {0.5, 0.5, 0.0, 1.0};
GLfloat l2_amb[] = {0.5, 0.5, 0.5, 1.0};
//GLfloat l2_amb[] = {0.5, 0.5, 0.5, 1.0};
glEnable(GL_LIGHT2);
glLightfv(GL_LIGHT2, GL_DIFFUSE, l2_diff);
@ -145,7 +145,7 @@ void DrawTexturedQuad(int tex, float x, float y, float z)
GLfloat y0 = y - texH / 2;
GLfloat x1 = x + texW / 2;
GLfloat y1 = y + texH / 2;
GLfloat color[] = {1.0f, 1.0f, 1.0f, 1.0f};
//GLfloat color[] = {1.0f, 1.0f, 1.0f, 1.0f};
GLfloat mat_ambient[] = {1.0f, 1.0f, 1.0f, 1.0f};
GLfloat vertex_data[] = {
@ -172,14 +172,6 @@ void DrawTexturedQuad(int tex, float x, float y, float z)
0.0, 0.0, 1.0
};
GLfloat color_data[] = {
/* 2D Coordinate, texture coordinate */
color[0], color[1], color[2], color[3],
color[0], color[1], color[2], color[3],
color[0], color[1], color[2], color[3],
color[0], color[1], color[2], color[3]
};
//GLint indices[] = {0,1,2,3,2,3};
glEnable(GL_TEXTURE_2D);

View File

@ -24,8 +24,7 @@ KOS_INIT_ROMDISK(romdisk);
#include "../loadbmp.h"
float xrot, yrot, zrot;
int texture[1];
GLuint texture[1];
void LoadGLTextures() {

View File

@ -35,7 +35,7 @@ int ImageLoad(char *filename, Image *image) {
return 0;
}
image->sizeX = sizeX;
printf("Width of %s: %d\n", filename, sizeX);
printf("Width of %s: %ld\n", filename, sizeX);
// read the height
if ((i = fread(&sizeY, 4, 1, file)) != 1) {
@ -43,7 +43,7 @@ int ImageLoad(char *filename, Image *image) {
return 0;
}
image->sizeY = sizeY;
printf("Height of %s: %d\n", filename, sizeY);
printf("Height of %s: %ld\n", filename, sizeY);
// calculate the size (assuming 24 bits or 3 bytes per pixel).
size = image->sizeX * image->sizeY * 3;

View File

@ -20,9 +20,7 @@ KOS_INIT_ROMDISK(romdisk);
#endif
#include "../loadbmp.h"
/* storage for one texture */
int texture[1];
GLuint texture[1];
// Load Bitmaps And Convert To Textures
void LoadGLTextures() {

View File

@ -62,7 +62,7 @@ int ImageLoad(char *filename, Image *image) {
GLboolean twiddled = (header.type & (1 << 26)) < 1;
GLboolean compressed = (header.type & (1 << 30)) > 0;
GLboolean mipmapped = (header.type & (1 << 31)) > 0;
GLboolean strided = (header.type & (1 << 25)) > 0;
//GLboolean strided = (header.type & (1 << 25)) > 0;
GLuint format = (header.type >> 27) & 0b111;
image->data = (char *) malloc (header.size);
@ -70,8 +70,8 @@ int ImageLoad(char *filename, Image *image) {
image->sizeY = header.height;
image->dataSize = header.size;
GLuint expected = 2 * header.width * header.height;
GLuint ratio = (GLuint) (((GLfloat) expected) / ((GLfloat) header.size));
//GLuint expected = 2 * header.width * header.height;
//GLuint ratio = (GLuint) (((GLfloat) expected) / ((GLfloat) header.size));
fread(image->data, image->dataSize, 1, file);
fclose(file);

View File

@ -22,7 +22,7 @@ KOS_INIT_ROMDISK(romdisk);
float xrot, yrot, zrot;
/* storage for one texture */
int texture[1];
GLuint texture[1];
/* Image type - contains height, width, and data */
struct Image {
@ -59,7 +59,7 @@ int ImageLoad(char *filename, Image *image) {
GLboolean twiddled = (header.type & (1 << 26)) < 1;
GLboolean compressed = (header.type & (1 << 30)) > 0;
GLboolean mipmapped = (header.type & (1 << 31)) > 0;
GLboolean strided = (header.type & (1 << 25)) > 0;
//GLboolean strided = (header.type & (1 << 25)) > 0;
GLuint format = (header.type >> 27) & 0b111;
image->data = (char *) malloc (header.size);
@ -67,8 +67,8 @@ int ImageLoad(char *filename, Image *image) {
image->sizeY = header.height;
image->dataSize = header.size;
GLuint expected = 2 * header.width * header.height;
GLuint ratio = (GLuint) (((GLfloat) expected) / ((GLfloat) header.size));
//GLuint expected = 2 * header.width * header.height;
//GLuint ratio = (GLuint) (((GLfloat) expected) / ((GLfloat) header.size));
fread(image->data, image->dataSize, 1, file);
fclose(file);

View File

@ -11,6 +11,11 @@
#include <stdint.h>
#include <stdlib.h>
#ifdef __DREAMCAST__
#include <kos.h>
#endif
#define FPS 60
uint32_t waittime = 1000.0f/FPS;
uint32_t framestarttime = 0;
@ -227,8 +232,6 @@ int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing
int main(int argc, char *argv[])
{
BOOL done=FALSE; // Bool Variable To Exit Loop
glKosInit();
InitGL();

View File

@ -22,8 +22,7 @@ KOS_INIT_ROMDISK(romdisk);
/* floats for x rotation, y rotation, z rotation */
float xrot, yrot, zrot;
/* storage for one texture */
int texture[1];
GLuint texture[1];
typedef struct {
unsigned int height;

View File

@ -41,7 +41,7 @@
/* floats for x rotation, y rotation, z rotation */
float xrot, yrot, zrot;
int textures[3];
GLuint textures[3];
typedef struct {
uint32_t height;
@ -272,7 +272,7 @@ int BMP_GetPalette(FILE *pFile)
bitCount = BmpInfoHeader.ClrImportant * sizeof(RGB_QUAD);
if (fread(BmpRgbQuad, 1, bitCount, pFile) != bitCount){
fprintf(stderr, "Failed to read palette: %d\n", bitCount);
fprintf(stderr, "Failed to read palette: %ld\n", bitCount);
return 0;
}
@ -293,7 +293,7 @@ int BMP_GetPalette(FILE *pFile)
int BMP_Depack(FILE *pFile,char *pZone)
{
char PadRead[4];
int32_t i, j, Offset, PadSize, pix, c;
int32_t i, j, Offset, PadSize, c;
if (BmpInfoHeader.Compression != BMP_BI_RGB)
return 0;
@ -356,7 +356,7 @@ int LoadPalettedBMP(const char* filename, Image* image)
}
/* store palette information */
image->palette = BmpPal;
image->palette = (char*)BmpPal;
image->palette_width = 16;

View File

@ -287,7 +287,7 @@ static bool write_samples(const char* path) {
root = ARCS;
for(int i = 0; i < BUCKET_SIZE; ++i) {
if(root->pc) {
printf("Incrementing %d for %x. ", (root->pc - lowest_address) / bin_size, (unsigned int) root->pc);
printf("Incrementing %ld for %x. ", (root->pc - lowest_address) / bin_size, (unsigned int) root->pc);
bins[(root->pc - lowest_address) / bin_size]++;
printf("Now: %d\n", (int) bins[(root->pc - lowest_address) / bin_size]);

View File

@ -435,7 +435,7 @@ bool test_clip_case_001() {
SceneListSubmit(&data[0], data.size());
check_equal(sent.size(), 5);
check_equal(sent.size(), 5u);
check_equal(sent[0].flags, GPU_CMD_POLYHDR);
check_equal(sent[1].flags, GPU_CMD_VERTEX);
check_equal(sent[2].flags, GPU_CMD_VERTEX);
@ -461,7 +461,7 @@ bool test_clip_case_010() {
SceneListSubmit(&data[0], data.size());
check_equal(sent.size(), 4);
check_equal(sent.size(), 4u);
check_equal(sent[0].flags, GPU_CMD_POLYHDR);
check_equal(sent[1].flags, GPU_CMD_VERTEX);
check_equal(sent[2].flags, GPU_CMD_VERTEX);
@ -481,7 +481,7 @@ bool test_clip_case_100() {
SceneListSubmit(&data[0], data.size());
check_equal(sent.size(), 5);
check_equal(sent.size(), 5u);
check_equal(sent[0].flags, GPU_CMD_POLYHDR);
check_equal(sent[1].flags, GPU_CMD_VERTEX);
check_equal(sent[2].flags, GPU_CMD_VERTEX);
@ -507,7 +507,7 @@ bool test_clip_case_110() {
SceneListSubmit(&data[0], data.size());
check_equal(sent.size(), 6);
check_equal(sent.size(), 6u);
check_equal(sent[0].flags, GPU_CMD_POLYHDR);
check_equal(sent[1].flags, GPU_CMD_VERTEX);
check_equal(sent[2].flags, GPU_CMD_VERTEX);
@ -530,7 +530,7 @@ bool test_clip_case_011() {
SceneListSubmit(&data[0], data.size());
check_equal(sent.size(), 6);
check_equal(sent.size(), 6u);
check_equal(sent[0].flags, GPU_CMD_POLYHDR);
check_equal(sent[1].flags, GPU_CMD_VERTEX);
check_equal(sent[2].flags, GPU_CMD_VERTEX);
@ -553,7 +553,7 @@ bool test_clip_case_101() {
SceneListSubmit(&data[0], data.size());
check_equal(sent.size(), 6);
check_equal(sent.size(), 6u);
check_equal(sent[0].flags, GPU_CMD_POLYHDR);
check_equal(sent[1].flags, GPU_CMD_VERTEX);
check_equal(sent[2].flags, GPU_CMD_VERTEX);
@ -576,7 +576,7 @@ bool test_clip_case_111() {
SceneListSubmit(&data[0], data.size());
check_equal(sent.size(), 4);
check_equal(sent.size(), 4u);
check_equal(sent[0].flags, GPU_CMD_POLYHDR);
check_equal(sent[1].flags, GPU_CMD_VERTEX);
check_equal(sent[2].flags, GPU_CMD_VERTEX);