Changeset 4135 for trunk/src


Ignore:
Timestamp:
Aug 31, 2000, 2:48:42 PM (25 years ago)
Author:
sandervl
Message:

misc fixes for dxview + powerdvd

Location:
trunk/src/ddraw
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/ddraw/OS2DDRAW.CPP

    r3595 r4135  
    1 /* $Id: OS2DDRAW.CPP,v 1.21 2000-05-23 18:47:23 sandervl Exp $ */
     1/* $Id: OS2DDRAW.CPP,v 1.22 2000-08-31 12:48:41 sandervl Exp $ */
    22
    33/*
     
    256256     !IsEqualGUID(riid, IID_IDirectDraw2) &&
    257257     !IsEqualGUID(riid, IID_IDirectDraw4) &&
    258      !IsEqualGUID(riid, IID_IDirect3D))
    259 //&& !IsEqualGUID(riid, IID_IUnknown))
     258     !IsEqualGUID(riid, IID_IDirect3D) &&
     259    !IsEqualGUID(riid, IID_IUnknown))
    260260  return E_NOINTERFACE;
    261261
     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
    262299  // ToDo Better way of returning differnent intterfaces for same class
    263300  if(IsEqualGUID(riid, IID_IDirect3D))
     
    289326  *ppvObj = This;
    290327  DrawAddRef(This);
     328#endif
    291329
    292330  return(DD_OK);
     
    889927//******************************************************************************
    890928//******************************************************************************
    891 HRESULT __stdcall DrawGetCaps(THIS, LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDHELCaps)
    892 {
    893   DWORD dwSize;
    894 
    895   #ifdef DEBUG
    896     dprintf(("DDRAW: DDGetCaps of "));
    897   #endif
     929HRESULT __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));
    898935
    899936  if( (NULL==lpDDDriverCaps) && (NULL==lpDDHELCaps) )
     
    927964    // Now report the CAPs back which we support
    928965    lpDDDriverCaps->dwCaps = DDCAPS_BLT |              // We do blitting
     966                             DDCAPS_BLTSTRETCH |
    929967                             DDCAPS_BLTCOLORFILL |     // We do colorfills
     968                             DDCAPS_BLTDEPTHFILL |
    930969                             DDCAPS_COLORKEY |         // We support Colorkeying
    931970                             DDCAPS_COLORKEYHWASSIST | // But we (may) use the CPU
    932971                             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;
    934975
    935976    lpDDDriverCaps->dwCaps2 = DDCAPS2_CERTIFIED |         // Who cares so say yes
    936                               //DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?!
     977                              DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?!
    937978                              DDCAPS2_COPYFOURCC |        // yepp memcpy will do this
    938979                              DDCAPS2_NONLOCALVIDMEM |    // All surfaces are in memory
     
    941982    lpDDDriverCaps->dwCKeyCaps = DDCKEYCAPS_SRCBLT;      // Only source transparent blitting
    942983
    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 ?
    944986                                                         // Maybe later add stretching support?
    945987
     
    948990                                DDPCAPS_VSYNC  |        // Vsync yet
    949991                                DDPCAPS_PRIMARYSURFACE; //
    950     lpDDDriverCaps->dwVidMemTotal = 4096*1024;          // total video memory
    951     lpDDDriverCaps->dwVidMemFree  = 4096*1024;          // total free video memory
    952     lpDDDriverCaps->dwNumFourCCCodes;        // number of supported FOURCC codes
     992    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
    953995/*
    954996    ToDo: must finde out ow the array is used for this
     
    10521094    dprintf(("DDRAW:  HEL\n"));
    10531095
    1054 #if 1
    1055 //SvL: PowerDVD uses size 316
     1096    //SvL: PowerDVD uses size 316
    10561097    if( (sizeof(DDCAPS)     != lpDDHELCaps->dwSize) &&
    10571098        (sizeof(DDCAPS_DX5) != lpDDHELCaps->dwSize) &&
     
    10621103      return(DDERR_INVALIDPARAMS);
    10631104    }
    1064 #else
    1065     if(sizeof(DDCAPS)!=lpDDHELCaps->dwSize)
    1066     {
    1067       dprintf(("DDRAW: Size Not Set\n"));
    1068       return(DDERR_INVALIDPARAMS);
    1069     }
    1070 #endif
    10711105    // Clear structure so we only have to set the supported flags
    10721106
    1073     dwSize = lpDDDriverCaps->dwSize;
    1074     memset( lpDDDriverCaps,
     1107    dwSize = lpDDHELCaps->dwSize;
     1108    memset( lpDDHELCaps,
    10751109            0,
    1076             lpDDDriverCaps->dwSize);
    1077 
     1110            lpDDHELCaps->dwSize);
    10781111
    10791112    // Reset the size
     
    10821115    // Now report the CAPs back which we support
    10831116    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;
    10891124
    10901125    lpDDHELCaps->dwCaps2 = DDCAPS2_CERTIFIED |         // Who cares so say yes
    1091                               DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?!
    1092                               DDCAPS2_COPYFOURCC |        // yepp memcpy will do this
    1093                               DDCAPS2_NONLOCALVIDMEM |    // All surfaces are in memory
    1094                               DDCAPS2_WIDESURFACES;       // Any size you want!
     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!
    10951130
    10961131    lpDDHELCaps->dwCKeyCaps = DDCKEYCAPS_SRCBLT;      // Only source transparent blitting
    10971132
    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 ?
    10991135                                                         // Maybe later add stretching support?
    11001136
    11011137    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
    11081147    lpDDHELCaps->dwRops[DD_ROP_SPACE];    // supported raster ops
    11091148    lpDDHELCaps->dwSVBCaps = DDCAPS_BLT |              // We do blitting
     
    11311170    if(dwSize>sizeof(DDCAPS_DX3))
    11321171    {
    1133         lpDDHELCaps->dwSVBCaps2 = DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?!
    1134                                   DDCAPS2_COPYFOURCC |        // yepp memcpy will do this
    1135                                   DDCAPS2_WIDESURFACES;       // Any size you want!
    1136         lpDDHELCaps->dwNLVBCaps = DDCAPS_BLT |              // We do blitting
     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
    11371176                                  DDCAPS_BLTCOLORFILL |     // We do colorfills
    11381177                                  DDCAPS_COLORKEY |         // We support Colorkeying
    11391178                                  DDCAPS_COLORKEYHWASSIST;
    1140         lpDDHELCaps->dwNLVBCaps2 = DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?!
     1179      lpDDHELCaps->dwNLVBCaps2 = DDCAPS2_CANRENDERWINDOWED | // Better check for Voodoo ?!
    11411180                                   DDCAPS2_COPYFOURCC |        // yepp memcpy will do this
    11421181                                   DDCAPS2_WIDESURFACES;       // Any size you want!
    1143         lpDDHELCaps->dwNLVBCKeyCaps = DDCKEYCAPS_SRCBLT;      // Only source transparent blitting
    1144         lpDDHELCaps->dwNLVBFXCaps;            //  .
    1145         lpDDHELCaps->dwNLVBRops[DD_ROP_SPACE];//  .
     1182      lpDDHELCaps->dwNLVBCKeyCaps = DDCKEYCAPS_SRCBLT;      // Only source transparent blitting
     1183      lpDDHELCaps->dwNLVBFXCaps;            //  .
     1184      lpDDHELCaps->dwNLVBRops[DD_ROP_SPACE];//  .
    11461185    }
    11471186
     
    11551194{
    11561195  OS2IDirectDraw        *me = (OS2IDirectDraw *)This;
    1157   #ifdef DEBUG
    1158     dprintf(("DDRAW: GetDisplayMode\n"));
    1159   #endif
     1196
     1197  dprintf(("DDRAW: GetDisplayMode %x %x", This, lpDDSurfaceDesc));
    11601198
    11611199  // Check Parameter
     
    12711309{
    12721310  OS2IDirectDraw        *me = (OS2IDirectDraw *)This;
    1273   #ifdef DEBUG
    1274     dprintf(("DDRAW: GetDisplayMode\n"));
    1275   #endif
     1311
     1312  dprintf(("DDRAW: GetDisplayMode4 %x %x", This, lpDDSurfaceDesc2));
    12761313
    12771314  // Check Parameter
     
    13841421//******************************************************************************
    13851422//******************************************************************************
    1386 HRESULT __stdcall DrawGetFourCCCodes(THIS, LPDWORD lpNumCodes, LPDWORD lpCodes)
    1387 {
    1388   DWORD dwFCC[3] = {FOURCC_LUT8,FOURCC_R565,FOURCC_RGB3};
    1389   #ifdef DEBUG
    1390     dprintf(("DDRAW: GetFourCCCodes\n"));
    1391   #endif
     1423HRESULT __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));
    13921429
    13931430  if(NULL==lpNumCodes)
     
    13961433  if(NULL==lpCodes)
    13971434  {
    1398     *lpNumCodes = 3; // LUT8, R565, RGB3 are the FourCC we support for now
     1435    *lpNumCodes = MAX_FOURCC_CODES; // LUT8, R565, RGB3 are the FourCC we support for now
    13991436  }
    14001437  else
    14011438  {
    1402     for(int i=0;(i<3)&&(i<*lpNumCodes);i++)
     1439    for(int i=0;(i<MAX_FOURCC_CODES)&&(i<*lpNumCodes);i++)
    14031440    {
    14041441      *lpCodes = dwFCC[i];
    1405       lpCodes +=4;
    1406     }
    1407     if(*lpNumCodes < 3)
    1408       *lpNumCodes = 3;
     1442      lpCodes++;
     1443    }
     1444    *lpNumCodes = MAX_FOURCC_CODES;
    14091445  }
    14101446  return(DD_OK);
  • trunk/src/ddraw/OS2DDRAW.H

    r3713 r4135  
    1 /* $Id: OS2DDRAW.H,v 1.11 2000-06-14 20:21:11 hugh Exp $ */
     1/* $Id: OS2DDRAW.H,v 1.12 2000-08-31 12:48:41 sandervl Exp $ */
    22
    33/*
     
    2525#undef THIS
    2626#define THIS VOID*
     27
     28#define MAX_FOURCC_CODES        3
     29
    2730class OS2IDirectDraw
    2831{
     
    191194HRESULT __stdcall D3DFindDevice(THIS, LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT);
    192195
     196#define FOURCC_YUY2  mmioFOURCC( 'Y', 'U', 'Y', '2' )
     197#define FOURCC_UYVY  mmioFOURCC( 'U', 'Y', 'V', 'Y' )
     198
    193199#endif
  • trunk/src/ddraw/ddraw.CPP

    r2987 r4135  
    1 /* $Id: ddraw.CPP,v 1.12 2000-03-03 19:21:22 hugh Exp $ */
     1/* $Id: ddraw.CPP,v 1.13 2000-08-31 12:48:42 sandervl Exp $ */
    22
    33/*
     
    5959}
    6060//******************************************************************************
     61//******************************************************************************
     62HRESULT 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//******************************************************************************
    6170typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
    6271//******************************************************************************
     
    6675  dprintf(("DDRAW: DirectDrawEnumerateA\n Callback for DIVE\n"));
    6776  //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",
    6978                "DirectDraw/2 v0.2", lpContext) == DDENUMRET_CANCEL)
    7079  {
     
    7281    return(DD_OK);
    7382  }
     83//SvL: Crashes dxview.exe; expects a different vtbl when creating
     84//     an IID_IDirect3D object
     85#if 0
    7486  else //now for Direct3D
    7587  {
     
    8294    }
    8395  }
     96#endif
    8497  dprintf(("DDRAW: Done Enumeration\n\n"));
    8598
  • trunk/src/ddraw/ddraw.DEF

    r2641 r4135  
    1 ; $Id: ddraw.DEF,v 1.5 2000-02-04 23:41:01 hugh Exp $
     1; $Id: ddraw.DEF,v 1.6 2000-08-31 12:48:42 sandervl Exp $
    22
    33;
     
    1616; D3DParseUnknownCommand          @2
    1717; DDGetAttachedSurfaceLcl         @3
    18  DDHAL32_VidMemFree = _DDHAL32_VidMemFree@4         @4
    19  DDHAL32_VidMemAlloc    = _DDHAL32_VidMemAlloc@4        @5
     18 DDHAL32_VidMemFree = _DDHAL32_VidMemFree@4                     @4
     19 DDHAL32_VidMemAlloc    = _DDHAL32_VidMemAlloc@4                @5
    2020; DDInternalLock            @6
    2121; DDInternalUnlock            @7
    2222; DSoundHelp              @8
    23  DirectDrawCreate       = _OS2DirectDrawCreate@12         @9
     23 DirectDrawCreate         = _OS2DirectDrawCreate@12             @9
    2424; DirectDrawCreateClipper         @10
    25 ; DirectDrawCreateEx            @11
    26  DirectDrawEnumerateA   = _OS2DirectDrawEnumerateA@8      @12
    27  DirectDrawEnumerateExA   = _OS2DirectDrawEnumerateExA@12     @13
     25 DirectDrawCreateEx       = _DirectDrawCreateEx@16              @11
     26 DirectDrawEnumerateA     = _OS2DirectDrawEnumerateA@8          @12
     27 DirectDrawEnumerateExA   = _OS2DirectDrawEnumerateExA@12       @13
    2828; DirectDrawEnumerateExW          @14
    2929; DirectDrawEnumerateW            @15
    30 DllCanUnloadNow   = _DllCanUnloadNow@0                      @16
    31 DllGetClassObject = _DllGetClassObject@12                    @17
     30DllCanUnloadNow   = _DllCanUnloadNow@0                          @16
     31DllGetClassObject = _DllGetClassObject@12                       @17
    3232; GetAliasedVidMem            @18
    3333; GetDDSurfaceLocal           @19
Note: See TracChangeset for help on using the changeset viewer.