mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-08-04 03:07:07 -04:00
Windows: Fix OpenGL build not working with builtin 1.1 software renderer anymore
This commit is contained in:
parent
d6120b3c83
commit
8b6c4b97e6
@ -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[] = {
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user