Skip to content

Commit

Permalink
OpenGL: Disable fog on versions < 1.4
Browse files Browse the repository at this point in the history
  • Loading branch information
0x1F9F1 committed Mar 13, 2024
1 parent 0515da7 commit 892316d
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
6 changes: 6 additions & 0 deletions code/midtown/agigl/glrsys.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -954,6 +954,12 @@ void agiGLRasterizer::FlushState()
if (fog_mode != agiLastState.FogMode || fog_start != agiLastState.FogStart || fog_end != agiLastState.FogEnd ||
fog_density != agiLastState.FogDensity)
{
if (fog_mode != agiFogMode::None)
{
if (!shader_ && !agiGL->HasVersion(140))
fog_mode = agiFogMode::None;
}

agiLastState.FogMode = fog_mode;
agiLastState.FogStart = fog_start;
agiLastState.FogEnd = fog_end;
Expand Down
27 changes: 24 additions & 3 deletions vendor/glad/include/KHR/khrplatform.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,20 @@ typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
/*
* To support platform where unsigned long cannot be used interchangeably with
* inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
* Ideally, we could just use (u)intptr_t everywhere, but this could result in
* ABI breakage if khronos_uintptr_t is changed from unsigned long to
* unsigned long long or similar (this results in different C++ name mangling).
* To avoid changes for existing platforms, we restrict usage of intptr_t to
* platforms where the size of a pointer is larger than the size of long.
*/
#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
#define KHRONOS_USE_INTPTR_T
#endif
#endif

#elif defined(__VMS ) || defined(__sgi)

Expand Down Expand Up @@ -235,14 +249,21 @@ typedef unsigned short int khronos_uint16_t;
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
* to be the only LLP64 architecture in current use.
*/
#ifdef _WIN64
#ifdef KHRONOS_USE_INTPTR_T
typedef intptr_t khronos_intptr_t;
typedef uintptr_t khronos_uintptr_t;
#elif defined(_WIN64)
typedef signed long long int khronos_intptr_t;
typedef unsigned long long int khronos_uintptr_t;
typedef signed long long int khronos_ssize_t;
typedef unsigned long long int khronos_usize_t;
#else
typedef signed long int khronos_intptr_t;
typedef unsigned long int khronos_uintptr_t;
#endif

#if defined(_WIN64)
typedef signed long long int khronos_ssize_t;
typedef unsigned long long int khronos_usize_t;
#else
typedef signed long int khronos_ssize_t;
typedef unsigned long int khronos_usize_t;
#endif
Expand Down

0 comments on commit 892316d

Please sign in to comment.