Windows: Fix OpenGL build not working with builtin 1.1 software renderer anymore

This commit is contained in:
UnknownShadow200 2025-07-06 21:34:59 +10:00
parent d6120b3c83
commit 8b6c4b97e6
3 changed files with 13 additions and 12 deletions

View File

@ -5,6 +5,10 @@
/*Not available on older SDKs */ /*Not available on older SDKs */
typedef cc_uintptr _DWORD_PTR; typedef cc_uintptr _DWORD_PTR;
typedef PVOID (WINAPI *_PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE process, _DWORD_PTR addrBase);
typedef _DWORD_PTR (WINAPI *_PGET_MODULE_BASE_ROUTINE)(HANDLE process, _DWORD_PTR address);
typedef BOOL (WINAPI *_PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE process, _DWORD_PTR baseAddress, PVOID buffer, DWORD size, DWORD* numRead);
CC_IMAGEHLP_FUNC _DWORD_PTR (WINAPI *_SymGetModuleBase)(HANDLE process, _DWORD_PTR addr); CC_IMAGEHLP_FUNC _DWORD_PTR (WINAPI *_SymGetModuleBase)(HANDLE process, _DWORD_PTR addr);
CC_IMAGEHLP_FUNC PVOID (WINAPI *_SymFunctionTableAccess)(HANDLE process, _DWORD_PTR addr); CC_IMAGEHLP_FUNC PVOID (WINAPI *_SymFunctionTableAccess)(HANDLE process, _DWORD_PTR addr);
CC_IMAGEHLP_FUNC BOOL (WINAPI *_SymInitialize)(HANDLE process, PCSTR userSearchPath, BOOL fInvadeProcess); CC_IMAGEHLP_FUNC BOOL (WINAPI *_SymInitialize)(HANDLE process, PCSTR userSearchPath, BOOL fInvadeProcess);
@ -16,8 +20,8 @@ CC_IMAGEHLP_FUNC BOOL (WINAPI *_SymGetLineFromAddr)(HANDLE hProcess, _DWOR
CC_IMAGEHLP_FUNC BOOL (WINAPI *_EnumerateLoadedModules)(HANDLE process, PENUMLOADED_MODULES_CALLBACK callback, PVOID userContext); CC_IMAGEHLP_FUNC BOOL (WINAPI *_EnumerateLoadedModules)(HANDLE process, PENUMLOADED_MODULES_CALLBACK callback, PVOID userContext);
CC_IMAGEHLP_FUNC BOOL (WINAPI *_StackWalk)(DWORD machineType, HANDLE process, HANDLE thread, STACKFRAME* stackFrame, PVOID contextRecord, CC_IMAGEHLP_FUNC BOOL (WINAPI *_StackWalk)(DWORD machineType, HANDLE process, HANDLE thread, STACKFRAME* stackFrame, PVOID contextRecord,
PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine, PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine, _PREAD_PROCESS_MEMORY_ROUTINE readMemory, _PFUNCTION_TABLE_ACCESS_ROUTINE functionTableAccess,
PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine, PTRANSLATE_ADDRESS_ROUTINE TranslateAddress); _PGET_MODULE_BASE_ROUTINE getModuleBase, PTRANSLATE_ADDRESS_ROUTINE translateAddress);
static void ImageHlp_LoadDynamicFuncs(void) { static void ImageHlp_LoadDynamicFuncs(void) {
static const struct DynamicLibSym funcs[] = { static const struct DynamicLibSym funcs[] = {

View File

@ -881,19 +881,19 @@ static PROC (WINAPI *_wglGetProcAddress)(LPCSTR func);
typedef BOOL (WINAPI *FP_SWAPINTERVAL)(int interval); typedef BOOL (WINAPI *FP_SWAPINTERVAL)(int interval);
static FP_SWAPINTERVAL _wglSwapIntervalEXT; static FP_SWAPINTERVAL _wglSwapIntervalEXT;
static void GLContext_SelectGraphicsMode(struct GraphicsMode* mode) { static void GLContext_SelectPixelFormat(void) {
PIXELFORMATDESCRIPTOR pfd = { 0 }; PIXELFORMATDESCRIPTOR pfd = { 0 };
int modeIndex; int modeIndex, bpp = DisplayInfo.Depth;
pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
pfd.nVersion = 1; pfd.nVersion = 1;
pfd.dwFlags = PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER; pfd.dwFlags = PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER;
/* TODO: PFD_SUPPORT_COMPOSITION FLAG? CHECK IF IT WORKS ON XP */ /* TODO: PFD_SUPPORT_COMPOSITION FLAG? CHECK IF IT WORKS ON XP */
pfd.cColorBits = mode->R + mode->G + mode->B; pfd.cColorBits = bpp == 32 ? 24 : bpp; /* number of R + G + B bits */
pfd.cDepthBits = GLCONTEXT_DEFAULT_DEPTH; pfd.cDepthBits = GLCONTEXT_DEFAULT_DEPTH;
pfd.iPixelType = PFD_TYPE_RGBA; pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cAlphaBits = mode->A; /* TODO not needed? test on Intel */ pfd.cAlphaBits = bpp == 32 ? 8 : 0; /* TODO not needed? test on Intel */
modeIndex = ChoosePixelFormat(win_DC, &pfd); modeIndex = ChoosePixelFormat(win_DC, &pfd);
if (modeIndex == 0) { Process_Abort("Requested graphics mode not available"); } if (modeIndex == 0) { Process_Abort("Requested graphics mode not available"); }
@ -918,11 +918,8 @@ void GLContext_Create(void) {
DynamicLib_OptSym(wglGetProcAddress) DynamicLib_OptSym(wglGetProcAddress)
}; };
static const cc_string glPath = String_FromConst("OPENGL32.dll"); static const cc_string glPath = String_FromConst("OPENGL32.dll");
struct GraphicsMode mode;
InitGraphicsMode(&mode);
GLContext_SelectGraphicsMode(&mode);
DynamicLib_LoadAll(&glPath, funcs, Array_Elems(funcs), &gl_lib); DynamicLib_LoadAll(&glPath, funcs, Array_Elems(funcs), &gl_lib);
GLContext_SelectPixelFormat();
ctx_handle = _wglCreateContext(win_DC); ctx_handle = _wglCreateContext(win_DC);
if (!ctx_handle) { if (!ctx_handle) {

View File

@ -69,7 +69,7 @@ static void* FastAllocTempMem(int size) {
*#########################################################################################################################*/ *#########################################################################################################################*/
static cc_bool convert_rgba; static cc_bool convert_rgba;
static void ConvertRGBA(void* dst, void* src, int numPixels) { static void ConvertRGBA(void* dst, const void* src, int numPixels) {
cc_uint8* d = (cc_uint8*)dst; cc_uint8* d = (cc_uint8*)dst;
cc_uint8* s = (cc_uint8*)src; cc_uint8* s = (cc_uint8*)src;
int i; int i;