- Timestamp:
- Aug 31, 2000, 2:48:42 PM (25 years ago)
- Location:
- trunk/src/ddraw
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ddraw/OS2DDRAW.CPP
r3595 r4135 1 /* $Id: OS2DDRAW.CPP,v 1.2 1 2000-05-23 18:47:23sandervl Exp $ */1 /* $Id: OS2DDRAW.CPP,v 1.22 2000-08-31 12:48:41 sandervl Exp $ */ 2 2 3 3 /* … … 256 256 !IsEqualGUID(riid, IID_IDirectDraw2) && 257 257 !IsEqualGUID(riid, IID_IDirectDraw4) && 258 !IsEqualGUID(riid, IID_IDirect3D) )259 //&&!IsEqualGUID(riid, IID_IUnknown))258 !IsEqualGUID(riid, IID_IDirect3D) && 259 !IsEqualGUID(riid, IID_IUnknown)) 260 260 return E_NOINTERFACE; 261 261 262 #if 1 263 if(IsEqualGUID(riid, IID_IUnknown)) { 264 *ppvObj = (LPVOID) This; 265 me->lpVtbl2 = me->lpVtbl; 266 } 267 else 268 if(IsEqualGUID(riid, IID_IDirect3D)) 269 { 270 me->lpVtbl2 = (IDirectDraw4Vtbl *)&me->Vtbl3D; 271 *ppvObj = (LPVOID) &me->lpVtbl2; 272 } 273 else 274 { 275 if(IsEqualGUID(riid, IID_IDirectDraw4)) 276 { 277 dprintf(("DDRAW: IID_IDirectDraw4 Interface\n")); 278 me->lpVtbl2 = (IDirectDraw4Vtbl *)&me->Vtbl4; 279 *ppvObj = (LPVOID) &me->lpVtbl2; 280 } 281 else 282 { 283 if(IsEqualGUID(riid, IID_IDirectDraw2)) 284 { 285 dprintf(("DDRAW: IID_IDirectDraw2 Interface\n")); 286 me->lpVtbl2 = (IDirectDraw4Vtbl *)&me->Vtbl2; 287 *ppvObj = (LPVOID) &me->lpVtbl2; 288 } 289 else 290 { 291 dprintf(("DDRAW: IID_IDirectDraw Interface\n")); 292 me->lpVtbl2 = (IDirectDraw4Vtbl *)&me->Vtbl; 293 *ppvObj = (LPVOID) &me->lpVtbl; 294 } 295 } 296 } 297 DrawAddRef(This); 298 #else 262 299 // ToDo Better way of returning differnent intterfaces for same class 263 300 if(IsEqualGUID(riid, IID_IDirect3D)) … … 289 326 *ppvObj = This; 290 327 DrawAddRef(This); 328 #endif 291 329 292 330 return(DD_OK); … … 889 927 //****************************************************************************** 890 928 //****************************************************************************** 891 HRESULT __stdcall DrawGetCaps(THIS, LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) 892 { 893 DWORD dwSize; 894 895 #ifdef DEBUG 896 dprintf(("DDRAW: DDGetCaps of ")); 897 #endif 929 HRESULT __stdcall DrawGetCaps(THIS This, LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps) 930 { 931 DWORD dwSize; 932 OS2IDirectDraw *me = (OS2IDirectDraw *)This; 933 934 dprintf(("DDRAW: DDGetCaps %x %x %x", This, lpDDDriverCaps, lpDDHELCaps)); 898 935 899 936 if( (NULL==lpDDDriverCaps) && (NULL==lpDDHELCaps) ) … … 927 964 // Now report the CAPs back which we support 928 965 lpDDDriverCaps->dwCaps = DDCAPS_BLT | // We do blitting 966 DDCAPS_BLTSTRETCH | 929 967 DDCAPS_BLTCOLORFILL | // We do colorfills 968 DDCAPS_BLTDEPTHFILL | 930 969 DDCAPS_COLORKEY | // We support Colorkeying 931 970 DDCAPS_COLORKEYHWASSIST | // But we (may) use the CPU 932 971 DDCAPS_GDI | // Maybe check if we are on Voodoo ? 933 DDCAPS_PALETTEVSYNC; // Got VSync 972 DDCAPS_PALETTEVSYNC | // Got VSync 973 // DDCAPS_READSCANLINE | 974 DDCAPS_BLTFOURCC; 934 975 935 976 lpDDDriverCaps->dwCaps2 = DDCAPS2_CERTIFIED | // Who cares so say yes 936 //DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?!977 DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?! 937 978 DDCAPS2_COPYFOURCC | // yepp memcpy will do this 938 979 DDCAPS2_NONLOCALVIDMEM | // All surfaces are in memory … … 941 982 lpDDDriverCaps->dwCKeyCaps = DDCKEYCAPS_SRCBLT; // Only source transparent blitting 942 983 943 // lpDDDriverCaps->dwFXCaps = DDFXCAPS_BLTMIRRORUPDOWN; // DIVE supports this, do we also ? 984 lpDDDriverCaps->dwFXCaps = DDFXCAPS_BLTMIRRORUPDOWN | 985 DDFXCAPS_BLTMIRRORLEFTRIGHT; // DIVE supports this, do we also ? 944 986 // Maybe later add stretching support? 945 987 … … 948 990 DDPCAPS_VSYNC | // Vsync yet 949 991 DDPCAPS_PRIMARYSURFACE; // 950 lpDDDriverCaps->dwVidMemTotal = 4096*1024; // total video memory951 lpDDDriverCaps->dwVidMemFree = 4096*1024; // total free video memory952 lpDDDriverCaps->dwNumFourCCCodes ; // number of supported FOURCC codes992 lpDDDriverCaps->dwVidMemTotal = me->dCaps.ulApertureSize; // total video memory 993 lpDDDriverCaps->dwVidMemFree = me->dCaps.ulApertureSize; // total free video memory 994 lpDDDriverCaps->dwNumFourCCCodes = MAX_FOURCC_CODES; // number of supported FOURCC codes 953 995 /* 954 996 ToDo: must finde out ow the array is used for this … … 1052 1094 dprintf(("DDRAW: HEL\n")); 1053 1095 1054 #if 1 1055 //SvL: PowerDVD uses size 316 1096 //SvL: PowerDVD uses size 316 1056 1097 if( (sizeof(DDCAPS) != lpDDHELCaps->dwSize) && 1057 1098 (sizeof(DDCAPS_DX5) != lpDDHELCaps->dwSize) && … … 1062 1103 return(DDERR_INVALIDPARAMS); 1063 1104 } 1064 #else1065 if(sizeof(DDCAPS)!=lpDDHELCaps->dwSize)1066 {1067 dprintf(("DDRAW: Size Not Set\n"));1068 return(DDERR_INVALIDPARAMS);1069 }1070 #endif1071 1105 // Clear structure so we only have to set the supported flags 1072 1106 1073 dwSize = lpDD DriverCaps->dwSize;1074 memset( lpDD DriverCaps,1107 dwSize = lpDDHELCaps->dwSize; 1108 memset( lpDDHELCaps, 1075 1109 0, 1076 lpDDDriverCaps->dwSize); 1077 1110 lpDDHELCaps->dwSize); 1078 1111 1079 1112 // Reset the size … … 1082 1115 // Now report the CAPs back which we support 1083 1116 lpDDHELCaps->dwCaps = DDCAPS_BLT | // We do blitting 1084 DDCAPS_BLTCOLORFILL | // We do colorfills 1085 DDCAPS_COLORKEY | // We support Colorkeying 1086 DDCAPS_COLORKEYHWASSIST | // But we (may) use the CPU 1087 DDCAPS_GDI | // Maybe check if we are on Voodoo ? 1088 DDCAPS_PALETTEVSYNC; // Got VSync 1117 DDCAPS_BLTCOLORFILL | // We do colorfills 1118 DDCAPS_COLORKEY | // We support Colorkeying 1119 //SvL: This is the emulation layer; no hw support here 1120 // DDCAPS_COLORKEYHWASSIST | // But we (may) use the CPU 1121 DDCAPS_GDI | // Maybe check if we are on Voodoo ? 1122 DDCAPS_PALETTEVSYNC | // Got VSync 1123 DDCAPS_BLTFOURCC; 1089 1124 1090 1125 lpDDHELCaps->dwCaps2 = DDCAPS2_CERTIFIED | // Who cares so say yes 1091 1092 1093 1094 1126 DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?! 1127 DDCAPS2_COPYFOURCC | // yepp memcpy will do this 1128 DDCAPS2_NONLOCALVIDMEM | // All surfaces are in memory 1129 DDCAPS2_WIDESURFACES; // Any size you want! 1095 1130 1096 1131 lpDDHELCaps->dwCKeyCaps = DDCKEYCAPS_SRCBLT; // Only source transparent blitting 1097 1132 1098 // lpDDDriverCaps->dwFXCaps = DDFXCAPS_BLTMIRRORUPDOWN; // DIVE supports this, do we also ? 1133 lpDDHELCaps->dwFXCaps = DDFXCAPS_BLTMIRRORUPDOWN | 1134 DDFXCAPS_BLTMIRRORLEFTRIGHT; // DIVE supports this, do we also ? 1099 1135 // Maybe later add stretching support? 1100 1136 1101 1137 lpDDHELCaps->dwPalCaps = DDPCAPS_8BIT | // Only 8 Bits pals 1102 DDPCAPS_ALLOW256 | // But all 256 colors 1103 DDPCAPS_VSYNC | // Vsync yet 1104 DDPCAPS_PRIMARYSURFACE; // 1105 lpDDHELCaps->dwVidMemTotal = 2048*1024; // total video memory 1106 lpDDHELCaps->dwVidMemFree = 2048*1024; // total free video memory 1107 lpDDHELCaps->dwNumFourCCCodes; // number of supported FOURCC codes 1138 DDPCAPS_ALLOW256 | // But all 256 colors 1139 DDPCAPS_VSYNC | // Vsync yet 1140 DDPCAPS_PRIMARYSURFACE; 1141 1142 //Video memory for emulation layer must be 0 (verified in NT) 1143 lpDDHELCaps->dwVidMemTotal = 0; // total video memory 1144 lpDDHELCaps->dwVidMemFree = 0; // total free video memory 1145 1146 lpDDHELCaps->dwNumFourCCCodes = MAX_FOURCC_CODES; // number of supported FOURCC codes 1108 1147 lpDDHELCaps->dwRops[DD_ROP_SPACE]; // supported raster ops 1109 1148 lpDDHELCaps->dwSVBCaps = DDCAPS_BLT | // We do blitting … … 1131 1170 if(dwSize>sizeof(DDCAPS_DX3)) 1132 1171 { 1133 1134 1135 1136 1172 lpDDHELCaps->dwSVBCaps2 = DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?! 1173 DDCAPS2_COPYFOURCC | // yepp memcpy will do this 1174 DDCAPS2_WIDESURFACES; // Any size you want! 1175 lpDDHELCaps->dwNLVBCaps = DDCAPS_BLT | // We do blitting 1137 1176 DDCAPS_BLTCOLORFILL | // We do colorfills 1138 1177 DDCAPS_COLORKEY | // We support Colorkeying 1139 1178 DDCAPS_COLORKEYHWASSIST; 1140 1179 lpDDHELCaps->dwNLVBCaps2 = DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?! 1141 1180 DDCAPS2_COPYFOURCC | // yepp memcpy will do this 1142 1181 DDCAPS2_WIDESURFACES; // Any size you want! 1143 1144 1145 1182 lpDDHELCaps->dwNLVBCKeyCaps = DDCKEYCAPS_SRCBLT; // Only source transparent blitting 1183 lpDDHELCaps->dwNLVBFXCaps; // . 1184 lpDDHELCaps->dwNLVBRops[DD_ROP_SPACE];// . 1146 1185 } 1147 1186 … … 1155 1194 { 1156 1195 OS2IDirectDraw *me = (OS2IDirectDraw *)This; 1157 #ifdef DEBUG 1158 dprintf(("DDRAW: GetDisplayMode\n")); 1159 #endif 1196 1197 dprintf(("DDRAW: GetDisplayMode %x %x", This, lpDDSurfaceDesc)); 1160 1198 1161 1199 // Check Parameter … … 1271 1309 { 1272 1310 OS2IDirectDraw *me = (OS2IDirectDraw *)This; 1273 #ifdef DEBUG 1274 dprintf(("DDRAW: GetDisplayMode\n")); 1275 #endif 1311 1312 dprintf(("DDRAW: GetDisplayMode4 %x %x", This, lpDDSurfaceDesc2)); 1276 1313 1277 1314 // Check Parameter … … 1384 1421 //****************************************************************************** 1385 1422 //****************************************************************************** 1386 HRESULT __stdcall DrawGetFourCCCodes(THIS , LPDWORD lpNumCodes, LPDWORD lpCodes)1387 { 1388 DWORD dwFCC[3] = {FOURCC_LUT8,FOURCC_R565,FOURCC_RGB3};1389 #ifdef DEBUG1390 dprintf(("DDRAW: GetFourCCCodes\n")); 1391 #endif1423 HRESULT __stdcall DrawGetFourCCCodes(THIS This, LPDWORD lpNumCodes, LPDWORD lpCodes) 1424 { 1425 // DWORD dwFCC[MAX_FOURCC_CODES] = {FOURCC_LUT8,FOURCC_R565,FOURCC_RGB3,FOURCC_YUY2}; 1426 DWORD dwFCC[MAX_FOURCC_CODES] = {FOURCC_LUT8,FOURCC_R565,FOURCC_RGB3}; 1427 1428 dprintf(("DDRAW: GetFourCCCodes %x %x %x", This, lpNumCodes, lpCodes)); 1392 1429 1393 1430 if(NULL==lpNumCodes) … … 1396 1433 if(NULL==lpCodes) 1397 1434 { 1398 *lpNumCodes = 3; // LUT8, R565, RGB3 are the FourCC we support for now1435 *lpNumCodes = MAX_FOURCC_CODES; // LUT8, R565, RGB3 are the FourCC we support for now 1399 1436 } 1400 1437 else 1401 1438 { 1402 for(int i=0;(i< 3)&&(i<*lpNumCodes);i++)1439 for(int i=0;(i<MAX_FOURCC_CODES)&&(i<*lpNumCodes);i++) 1403 1440 { 1404 1441 *lpCodes = dwFCC[i]; 1405 lpCodes +=4; 1406 } 1407 if(*lpNumCodes < 3) 1408 *lpNumCodes = 3; 1442 lpCodes++; 1443 } 1444 *lpNumCodes = MAX_FOURCC_CODES; 1409 1445 } 1410 1446 return(DD_OK); -
trunk/src/ddraw/OS2DDRAW.H
r3713 r4135 1 /* $Id: OS2DDRAW.H,v 1.1 1 2000-06-14 20:21:11 hughExp $ */1 /* $Id: OS2DDRAW.H,v 1.12 2000-08-31 12:48:41 sandervl Exp $ */ 2 2 3 3 /* … … 25 25 #undef THIS 26 26 #define THIS VOID* 27 28 #define MAX_FOURCC_CODES 3 29 27 30 class OS2IDirectDraw 28 31 { … … 191 194 HRESULT __stdcall D3DFindDevice(THIS, LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT); 192 195 196 #define FOURCC_YUY2 mmioFOURCC( 'Y', 'U', 'Y', '2' ) 197 #define FOURCC_UYVY mmioFOURCC( 'U', 'Y', 'V', 'Y' ) 198 193 199 #endif -
trunk/src/ddraw/ddraw.CPP
r2987 r4135 1 /* $Id: ddraw.CPP,v 1.1 2 2000-03-03 19:21:22 hughExp $ */1 /* $Id: ddraw.CPP,v 1.13 2000-08-31 12:48:42 sandervl Exp $ */ 2 2 3 3 /* … … 59 59 } 60 60 //****************************************************************************** 61 //****************************************************************************** 62 HRESULT WIN32API DirectDrawCreateEx(LPGUID lpGUID, LPVOID* lplpDD, REFIID iid, LPUNKNOWN pUnkOuter) 63 { 64 dprintf(("DirectDrawCreateEx: %x %x %x %x", lpGUID, lplpDD, iid, pUnkOuter)); 65 /* I don't know about what functionality is unique to Ex */ 66 return OS2DirectDrawCreate(lpGUID,(LPDIRECTDRAW*)lplpDD,pUnkOuter); 67 } 68 69 //****************************************************************************** 61 70 typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID); 62 71 //****************************************************************************** … … 66 75 dprintf(("DDRAW: DirectDrawEnumerateA\n Callback for DIVE\n")); 67 76 //call it twice for the DirectDraw & Direct3D classes 68 if(lpCallback(NULL, "DIVE DirectDraw for OS/2",77 if(lpCallback(NULL, "DIVE DirectDraw for OS/2", 69 78 "DirectDraw/2 v0.2", lpContext) == DDENUMRET_CANCEL) 70 79 { … … 72 81 return(DD_OK); 73 82 } 83 //SvL: Crashes dxview.exe; expects a different vtbl when creating 84 // an IID_IDirect3D object 85 #if 0 74 86 else //now for Direct3D 75 87 { … … 82 94 } 83 95 } 96 #endif 84 97 dprintf(("DDRAW: Done Enumeration\n\n")); 85 98 -
trunk/src/ddraw/ddraw.DEF
r2641 r4135 1 ; $Id: ddraw.DEF,v 1. 5 2000-02-04 23:41:01 hughExp $1 ; $Id: ddraw.DEF,v 1.6 2000-08-31 12:48:42 sandervl Exp $ 2 2 3 3 ; … … 16 16 ; D3DParseUnknownCommand @2 17 17 ; DDGetAttachedSurfaceLcl @3 18 DDHAL32_VidMemFree = _DDHAL32_VidMemFree@4 @419 DDHAL32_VidMemAlloc = _DDHAL32_VidMemAlloc@4 @518 DDHAL32_VidMemFree = _DDHAL32_VidMemFree@4 @4 19 DDHAL32_VidMemAlloc = _DDHAL32_VidMemAlloc@4 @5 20 20 ; DDInternalLock @6 21 21 ; DDInternalUnlock @7 22 22 ; DSoundHelp @8 23 DirectDrawCreate = _OS2DirectDrawCreate@12@923 DirectDrawCreate = _OS2DirectDrawCreate@12 @9 24 24 ; DirectDrawCreateClipper @10 25 ; DirectDrawCreateEx@1126 DirectDrawEnumerateA = _OS2DirectDrawEnumerateA@8@1227 DirectDrawEnumerateExA = _OS2DirectDrawEnumerateExA@12 @1325 DirectDrawCreateEx = _DirectDrawCreateEx@16 @11 26 DirectDrawEnumerateA = _OS2DirectDrawEnumerateA@8 @12 27 DirectDrawEnumerateExA = _OS2DirectDrawEnumerateExA@12 @13 28 28 ; DirectDrawEnumerateExW @14 29 29 ; DirectDrawEnumerateW @15 30 DllCanUnloadNow = _DllCanUnloadNow@0 @1631 DllGetClassObject = _DllGetClassObject@12 @1730 DllCanUnloadNow = _DllCanUnloadNow@0 @16 31 DllGetClassObject = _DllGetClassObject@12 @17 32 32 ; GetAliasedVidMem @18 33 33 ; GetDDSurfaceLocal @19
Note:
See TracChangeset
for help on using the changeset viewer.