ReactOS  0.4.14-dev-342-gdc047f9
utils.c File Reference
#include "config.h"
#include "wine/port.h"
#include "ddraw_private.h"
Include dependency graph for utils.c:

Go to the source code of this file.

Macros

#define STRUCT   DDSURFACEDESC2
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (ddraw)
 
static void DDRAW_dump_pixelformat (const DDPIXELFORMAT *pf)
 
void ddrawformat_from_wined3dformat (DDPIXELFORMAT *DDPixelFormat, enum wined3d_format_id wined3d_format)
 
enum wined3d_format_id wined3dformat_from_ddrawformat (const DDPIXELFORMAT *DDPixelFormat)
 
unsigned int wined3dmapflags_from_ddrawmapflags (unsigned int flags)
 
static float colour_to_float (DWORD colour, DWORD mask)
 
BOOL wined3d_colour_from_ddraw_colour (const DDPIXELFORMAT *pf, const struct ddraw_palette *palette, DWORD colour, struct wined3d_color *wined3d_colour)
 
static void DDRAW_dump_DWORD (const void *in)
 
static void DDRAW_dump_PTR (const void *in)
 
static void DDRAW_dump_DDCOLORKEY (const DDCOLORKEY *ddck)
 
static void DDRAW_dump_flags_nolf (DWORD flags, const struct flag_info *names, size_t num_names)
 
static void DDRAW_dump_flags (DWORD flags, const struct flag_info *names, size_t num_names)
 
void DDRAW_dump_DDSCAPS2 (const DDSCAPS2 *in)
 
static void DDRAW_dump_DDSCAPS (const DDSCAPS *in)
 
static void DDRAW_dump_pixelformat_flag (DWORD flagmask)
 
static void DDRAW_dump_members (DWORD flags, const void *data, const struct member_info *mems, size_t num_mems)
 
void DDRAW_dump_surface_desc (const DDSURFACEDESC2 *lpddsd)
 
void dump_D3DMATRIX (const D3DMATRIX *mat)
 
DWORD get_flexible_vertex_size (DWORD d3dvtVertexType)
 
void DDRAW_Convert_DDSCAPS_1_To_2 (const DDSCAPS *pIn, DDSCAPS2 *pOut)
 
void DDRAW_Convert_DDDEVICEIDENTIFIER_2_To_1 (const DDDEVICEIDENTIFIER2 *pIn, DDDEVICEIDENTIFIER *pOut)
 
void DDRAW_dump_cooperativelevel (DWORD cooplevel)
 
void DDRAW_dump_DDCAPS (const DDCAPS *lpcaps)
 
void multiply_matrix (D3DMATRIX *dest, const D3DMATRIX *src1, const D3DMATRIX *src2)
 
HRESULT hr_ddraw_from_wined3d (HRESULT hr)
 
void DDSD_to_DDSD2 (const DDSURFACEDESC *in, DDSURFACEDESC2 *out)
 
void DDSD2_to_DDSD (const DDSURFACEDESC2 *in, DDSURFACEDESC *out)
 

Macro Definition Documentation

◆ STRUCT

#define STRUCT   DDSURFACEDESC2

Function Documentation

◆ colour_to_float()

static float colour_to_float ( DWORD  colour,
DWORD  mask 
)
static

Definition at line 589 of file utils.c.

590 {
591  if (!mask)
592  return 0.0f;
593  return (float)(colour & mask) / (float)mask;
594 }
GLenum GLint GLuint mask
Definition: glext.h:6028

Referenced by wined3d_colour_from_ddraw_colour().

◆ DDRAW_Convert_DDDEVICEIDENTIFIER_2_To_1()

void DDRAW_Convert_DDDEVICEIDENTIFIER_2_To_1 ( const DDDEVICEIDENTIFIER2 pIn,
DDDEVICEIDENTIFIER pOut 
)

Definition at line 961 of file utils.c.

962 {
963  /* 2 adds a dwWHQLLevel field to the end. Both structures are
964  * unversioned. */
965  memcpy(pOut, pIn, sizeof(*pOut));
966 }
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878

Referenced by ddraw4_GetDeviceIdentifier().

◆ DDRAW_Convert_DDSCAPS_1_To_2()

void DDRAW_Convert_DDSCAPS_1_To_2 ( const DDSCAPS pIn,
DDSCAPS2 pOut 
)

Definition at line 951 of file utils.c.

952 {
953  /* 2 adds three additional caps fields to the end. Both versions
954  * are unversioned. */
955  pOut->dwCaps = pIn->dwCaps;
956  pOut->dwCaps2 = 0;
957  pOut->dwCaps3 = 0;
958  pOut->u1.dwCaps4 = 0;
959 }
DWORD dwCaps2
Definition: ddraw.h:733
DWORD dwCaps
Definition: ddraw.h:727
DWORD dwCaps4
Definition: ddraw.h:737
DWORD dwCaps
Definition: ddraw.h:732
DWORD dwCaps3
Definition: ddraw.h:734

Referenced by ddraw2_GetAvailableVidMem().

◆ DDRAW_dump_cooperativelevel()

void DDRAW_dump_cooperativelevel ( DWORD  cooplevel)

Definition at line 968 of file utils.c.

969 {
970  static const struct flag_info flags[] =
971  {
975  FE(DDSCL_NORMAL),
981  };
982 
983  if (TRACE_ON(ddraw))
984  {
985  TRACE(" - ");
986  DDRAW_dump_flags(cooplevel, flags, ARRAY_SIZE(flags));
987  }
988 }
#define DDSCL_EXCLUSIVE
Definition: ddraw.h:536
#define DDSCL_ALLOWMODEX
Definition: ddraw.h:537
#define DDSCL_SETDEVICEWINDOW
Definition: ddraw.h:539
#define TRACE(s)
Definition: solgame.cpp:4
#define DDSCL_ALLOWREBOOT
Definition: ddraw.h:533
#define FE(x)
GLbitfield flags
Definition: glext.h:7161
#define DDSCL_SETFOCUSWINDOW
Definition: ddraw.h:538
#define DDSCL_FULLSCREEN
Definition: ddraw.h:532
#define ARRAY_SIZE(a)
Definition: main.h:24
#define DDSCL_NOWINDOWCHANGES
Definition: ddraw.h:534
#define DDSCL_NORMAL
Definition: ddraw.h:535
#define TRACE_ON(x)
Definition: compat.h:65
static void DDRAW_dump_flags(DWORD flags, const struct flag_info *names, size_t num_names)
Definition: utils.c:707
#define DDSCL_CREATEDEVICEWINDOW
Definition: ddraw.h:540

Referenced by ddraw_set_cooperative_level().

◆ DDRAW_dump_DDCAPS()

void DDRAW_dump_DDCAPS ( const DDCAPS lpcaps)

Definition at line 990 of file utils.c.

991 {
992  static const struct flag_info flags1[] =
993  {
994  FE(DDCAPS_3D),
1000  FE(DDCAPS_BLT),
1004  FE(DDCAPS_GDI),
1005  FE(DDCAPS_OVERLAY),
1009  FE(DDCAPS_PALETTE),
1013  FE(DDCAPS_VBI),
1014  FE(DDCAPS_ZBLTS),
1017  FE(DDCAPS_ALPHA),
1023  FE(DDCAPS_CANCLIP),
1026  };
1027  static const struct flag_info flags2[] =
1028  {
1052  FE(DDCAPS2_STEREO),
1054  };
1055  static const struct flag_info flags3[] =
1056  {
1076  };
1077  static const struct flag_info flags4[] =
1078  {
1107  };
1108  static const struct flag_info flags5[] =
1109  {
1120  };
1121  static const struct flag_info flags6[] =
1122  {
1123  FE(DDPCAPS_4BIT),
1125  FE(DDPCAPS_8BIT),
1130  FE(DDPCAPS_VSYNC),
1131  FE(DDPCAPS_1BIT),
1132  FE(DDPCAPS_2BIT),
1133  FE(DDPCAPS_ALPHA),
1134  };
1135  static const struct flag_info flags7[] =
1136  {
1142  };
1143 
1144  TRACE(" - dwSize : %d\n", lpcaps->dwSize);
1145  TRACE(" - dwCaps : "); DDRAW_dump_flags(lpcaps->dwCaps, flags1, ARRAY_SIZE(flags1));
1146  TRACE(" - dwCaps2 : "); DDRAW_dump_flags(lpcaps->dwCaps2, flags2, ARRAY_SIZE(flags2));
1147  TRACE(" - dwCKeyCaps : "); DDRAW_dump_flags(lpcaps->dwCKeyCaps, flags3, ARRAY_SIZE(flags3));
1148  TRACE(" - dwFXCaps : "); DDRAW_dump_flags(lpcaps->dwFXCaps, flags4, ARRAY_SIZE(flags4));
1149  TRACE(" - dwFXAlphaCaps : "); DDRAW_dump_flags(lpcaps->dwFXAlphaCaps, flags5, ARRAY_SIZE(flags5));
1150  TRACE(" - dwPalCaps : "); DDRAW_dump_flags(lpcaps->dwPalCaps, flags6, ARRAY_SIZE(flags6));
1151  TRACE(" - dwSVCaps : "); DDRAW_dump_flags(lpcaps->dwSVCaps, flags7, ARRAY_SIZE(flags7));
1152  TRACE("...\n");
1153  TRACE(" - dwNumFourCCCodes : %d\n", lpcaps->dwNumFourCCCodes);
1154  TRACE(" - dwCurrVisibleOverlays : %d\n", lpcaps->dwCurrVisibleOverlays);
1155  TRACE(" - dwMinOverlayStretch : %d\n", lpcaps->dwMinOverlayStretch);
1156  TRACE(" - dwMaxOverlayStretch : %d\n", lpcaps->dwMaxOverlayStretch);
1157  TRACE("...\n");
1158  TRACE(" - ddsCaps : "); DDRAW_dump_DDSCAPS2(&lpcaps->ddsCaps);
1159 }
#define DDFXCAPS_BLTALPHA
Definition: ddraw.h:404
#define DDFXCAPS_BLTSHRINKY
Definition: ddraw.h:415
#define DDCAPS2_COPYFOURCC
Definition: ddraw.h:377
#define DDCAPS2_COLORCONTROLPRIMARY
Definition: ddraw.h:369
#define DDCAPS_STEREOVIEW
Definition: ddraw.h:63
#define DDFXALPHACAPS_BLTALPHAPIXELS
Definition: ddraw.h:393
#define DDFXCAPS_OVERLAYSHRINKX
Definition: ddraw.h:422
#define DDPCAPS_INITIALIZE
Definition: ddraw.h:452
#define DDFXCAPS_OVERLAYSHRINKXN
Definition: ddraw.h:423
#define DDCAPS_ALIGNSIZEDEST
Definition: ddraw.h:331
#define DDFXCAPS_OVERLAYSHRINKYN
Definition: ddraw.h:425
#define DDFXCAPS_BLTSHRINKXN
Definition: ddraw.h:414
#define DDCAPS_OVERLAYCANTCLIP
Definition: ddraw.h:341
#define DDCAPS2_NONLOCALVIDMEM
Definition: ddraw.h:371
#define DDFXCAPS_OVERLAYSTRETCHYN
Definition: ddraw.h:429
#define DDCAPS_READSCANLINE
Definition: ddraw.h:346
#define DDPCAPS_4BIT
Definition: ddraw.h:453
#define DDCAPS_ZOVERLAYS
Definition: ddraw.h:350
#define DDPCAPS_2BIT
Definition: ddraw.h:461
#define DDCAPS2_CANDROPZ16BIT
Definition: ddraw.h:370
#define DDCAPS_ZBLTS
Definition: ddraw.h:349
#define DDCAPS2_STEREO
Definition: ddraw.h:385
#define DDFXALPHACAPS_BLTALPHAPIXELSNEG
Definition: ddraw.h:394
#define DDPCAPS_8BIT
Definition: ddraw.h:455
#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG
Definition: ddraw.h:399
#define DDCAPS_PALETTE
Definition: ddraw.h:344
#define DDCAPS2_CANMANAGETEXTURE
Definition: ddraw.h:383
#define DDFXCAPS_BLTSHRINKYN
Definition: ddraw.h:416
#define DDPCAPS_PRIMARYSURFACELEFT
Definition: ddraw.h:457
#define DDCAPS2_CANFLIPODDEVEN
Definition: ddraw.h:375
#define DDPCAPS_PRIMARYSURFACE
Definition: ddraw.h:456
#define DDFXCAPS_OVERLAYSHRINKY
Definition: ddraw.h:424
#define DDCAPS_BLTSTRETCH
Definition: ddraw.h:338
#define DDCAPS2_WIDESURFACES
Definition: ddraw.h:374
#define DDCAPS2_NONLOCALVIDMEMCAPS
Definition: ddraw.h:372
#define DDFXCAPS_OVERLAYMIRRORUPDOWN
Definition: ddraw.h:431
#define DDCAPS_BLTCOLORFILL
Definition: ddraw.h:355
#define DDCAPS_GDI
Definition: ddraw.h:339
#define DDPCAPS_8BITENTRIES
Definition: ddraw.h:454
#define DDCKEYCAPS_SRCBLTCLRSPACEYUV
Definition: ddraw.h:492
#define DDCAPS_OVERLAYFOURCC
Definition: ddraw.h:342
#define DDFXCAPS_BLTROTATION90
Definition: ddraw.h:412
void DDRAW_dump_DDSCAPS2(const DDSCAPS2 *in)
Definition: utils.c:713
#define DDPCAPS_ALLOW256
Definition: ddraw.h:458
#define DDCAPS_BANKSWITCHED
Definition: ddraw.h:356
#define DDCAPS_BLTFOURCC
Definition: ddraw.h:337
#define DDCAPS2_VIDEOPORT
Definition: ddraw.h:364
#define DDCAPS_CANCLIPSTRETCHED
Definition: ddraw.h:359
#define DDFXCAPS_BLTARITHSTRETCHY
Definition: ddraw.h:407
#define DDCAPS2_PRIMARYGAMMA
Definition: ddraw.h:378
#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT
Definition: ddraw.h:430
#define DDCAPS_CANCLIP
Definition: ddraw.h:358
#define DDCKEYCAPS_DESTBLT
Definition: ddraw.h:481
#define DDSVCAPS_RESERVED3
Definition: ddraw.h:439
#define DDFXALPHACAPS_BLTALPHAEDGEBLEND
Definition: ddraw.h:392
#define DDCAPS_OVERLAYSTRETCH
Definition: ddraw.h:343
#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG
Definition: ddraw.h:401
#define DDCAPS_ALIGNBOUNDARYSRC
Definition: ddraw.h:332
#define DDFXALPHACAPS_BLTALPHASURFACESNEG
Definition: ddraw.h:396
#define DDCAPS_ALIGNSTRIDE
Definition: ddraw.h:334
#define DDCKEYCAPS_NOCOSTOVERLAY
Definition: ddraw.h:499
#define DDFXCAPS_OVERLAYARITHSTRETCHY
Definition: ddraw.h:421
#define DDCAPS_BLT
Definition: ddraw.h:335
#define DDCAPS_BLTDEPTHFILL
Definition: ddraw.h:357
#define DDCKEYCAPS_SRCOVERLAY
Definition: ddraw.h:494
#define DDSVCAPS_RESERVED2
Definition: ddraw.h:438
#define DDCAPS2_CANBOBINTERLEAVED
Definition: ddraw.h:366
#define DDCKEYCAPS_DESTOVERLAYCLRSPACE
Definition: ddraw.h:486
#define DDCAPS2_FLIPINTERVAL
Definition: ddraw.h:381
#define DDCKEYCAPS_SRCOVERLAYYUV
Definition: ddraw.h:498
#define DDFXALPHACAPS_OVERLAYALPHAPIXELS
Definition: ddraw.h:398
#define DDFXCAPS_BLTROTATION
Definition: ddraw.h:411
#define DDCKEYCAPS_SRCBLTYUV
Definition: ddraw.h:493
#define DDFXCAPS_BLTARITHSTRETCHYN
Definition: ddraw.h:408
#define DDCAPS2_CANRENDERWINDOWED
Definition: ddraw.h:379
#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV
Definition: ddraw.h:496
#define DDCKEYCAPS_DESTBLTYUV
Definition: ddraw.h:484
#define TRACE(s)
Definition: solgame.cpp:4
#define DDCAPS_ALIGNSIZESRC
Definition: ddraw.h:333
#define DDCAPS_ALIGNBOUNDARYDEST
Definition: ddraw.h:330
#define DDSVCAPS_RESERVED4
Definition: ddraw.h:440
#define DDSVCAPS_STEREOSEQUENTIAL
Definition: ddraw.h:450
#define DDPCAPS_VSYNC
Definition: ddraw.h:459
#define DDCAPS_BLTQUEUE
Definition: ddraw.h:336
#define FE(x)
#define DDCAPS2_TEXMANINNONLOCALVIDMEM
Definition: ddraw.h:384
#define DDFXCAPS_BLTSTRETCHXN
Definition: ddraw.h:418
#define DDCAPS_NOHARDWARE
Definition: ddraw.h:354
#define DDCKEYCAPS_DESTBLTCLRSPACEYUV
Definition: ddraw.h:483
#define DDCAPS_COLORKEY
Definition: ddraw.h:351
#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL
Definition: ddraw.h:386
#define DDFXCAPS_BLTSTRETCHX
Definition: ddraw.h:417
#define DDCAPS_COLORKEYHWASSIST
Definition: ddraw.h:353
#define DDFXCAPS_BLTSHRINKX
Definition: ddraw.h:413
#define DDFXCAPS_OVERLAYSTRETCHX
Definition: ddraw.h:426
#define DDCAPS2_AUTOFLIPOVERLAY
Definition: ddraw.h:365
#define DDCKEYCAPS_DESTOVERLAY
Definition: ddraw.h:485
#define DDFXCAPS_OVERLAYSTRETCHXN
Definition: ddraw.h:427
#define DDCAPS_CANBLTSYSMEM
Definition: ddraw.h:360
#define DDFXALPHACAPS_OVERLAYALPHASURFACES
Definition: ddraw.h:400
#define DDFXCAPS_OVERLAYALPHA
Definition: ddraw.h:405
#define DDFXCAPS_OVERLAYSTRETCHY
Definition: ddraw.h:428
#define DDCAPS2_NO2DDURING3DSCENE
Definition: ddraw.h:363
#define DDCAPS_OVERLAY
Definition: ddraw.h:340
#define DDPCAPS_1BIT
Definition: ddraw.h:460
#define DDCAPS_3D
Definition: ddraw.h:329
#define ARRAY_SIZE(a)
Definition: main.h:24
#define DDFXCAPS_OVERLAYARITHSTRETCHYN
Definition: ddraw.h:406
#define DDFXCAPS_BLTSTRETCHYN
Definition: ddraw.h:420
#define DDCKEYCAPS_SRCBLTCLRSPACE
Definition: ddraw.h:491
#define DDCKEYCAPS_DESTOVERLAYYUV
Definition: ddraw.h:489
#define DDCAPS_VBI
Definition: ddraw.h:348
#define DDCAPS2_CANCALIBRATEGAMMA
Definition: ddraw.h:380
#define DDPCAPS_ALPHA
Definition: ddraw.h:462
#define DDCKEYCAPS_DESTOVERLAYONEACTIVE
Definition: ddraw.h:488
#define DDCAPS2_CANBOBHARDWARE
Definition: ddraw.h:376
#define DDFXCAPS_BLTMIRRORUPDOWN
Definition: ddraw.h:410
#define DDSVCAPS_RESERVED1
Definition: ddraw.h:437
#define DDFXCAPS_BLTMIRRORLEFTRIGHT
Definition: ddraw.h:409
#define DDCKEYCAPS_SRCOVERLAYCLRSPACE
Definition: ddraw.h:495
#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV
Definition: ddraw.h:487
#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND
Definition: ddraw.h:397
#define DDCAPS2_CANBOBNONINTERLEAVED
Definition: ddraw.h:367
#define DDFXCAPS_BLTSTRETCHY
Definition: ddraw.h:419
#define DDCKEYCAPS_SRCOVERLAYONEACTIVE
Definition: ddraw.h:497
#define DDCAPS2_FLIPNOVSYNC
Definition: ddraw.h:382
#define DDCAPS_PALETTEVSYNC
Definition: ddraw.h:345
#define DDCAPS2_COLORCONTROLOVERLAY
Definition: ddraw.h:368
#define DDCAPS2_CERTIFIED
Definition: ddraw.h:362
#define DDCAPS2_NOPAGELOCKREQUIRED
Definition: ddraw.h:373
#define DDFXALPHACAPS_BLTALPHASURFACES
Definition: ddraw.h:395
#define DDCKEYCAPS_SRCBLT
Definition: ddraw.h:490
#define DDCAPS_ALPHA
Definition: ddraw.h:352
#define DDCKEYCAPS_DESTBLTCLRSPACE
Definition: ddraw.h:482
static void DDRAW_dump_flags(DWORD flags, const struct flag_info *names, size_t num_names)
Definition: utils.c:707

Referenced by ddraw7_GetCaps().

◆ DDRAW_dump_DDCOLORKEY()

static void DDRAW_dump_DDCOLORKEY ( const DDCOLORKEY ddck)
static

Definition at line 692 of file utils.c.

693 {
694  TRACE("Low : 0x%08x - High : 0x%08x\n", ddck->dwColorSpaceLowValue, ddck->dwColorSpaceHighValue);
695 }
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by DDRAW_dump_surface_desc().

◆ DDRAW_dump_DDSCAPS()

static void DDRAW_dump_DDSCAPS ( const DDSCAPS in)
static

Definition at line 776 of file utils.c.

777 {
778  DDSCAPS2 in_bis;
779 
780  in_bis.dwCaps = in->dwCaps;
781  in_bis.dwCaps2 = 0;
782  in_bis.dwCaps3 = 0;
783  in_bis.u1.dwCaps4 = 0;
784 
785  DDRAW_dump_DDSCAPS2(&in_bis);
786 }
DWORD dwCaps2
Definition: ddraw.h:733
DWORD dwCaps4
Definition: ddraw.h:737
void DDRAW_dump_DDSCAPS2(const DDSCAPS2 *in)
Definition: utils.c:713
DWORD dwCaps
Definition: ddraw.h:732
DWORD dwCaps3
Definition: ddraw.h:734
GLuint in
Definition: glext.h:9616

Referenced by DDRAW_dump_surface_desc().

◆ DDRAW_dump_DDSCAPS2()

void DDRAW_dump_DDSCAPS2 ( const DDSCAPS2 in)

Definition at line 713 of file utils.c.

714 {
715  static const struct flag_info flags[] =
716  {
718  FE(DDSCAPS_ALPHA),
721  FE(DDSCAPS_FLIP),
735  FE(DDSCAPS_OWNDC),
738  FE(DDSCAPS_MODEX),
747  };
748  static const struct flag_info flags2[] =
749  {
769  };
770 
772  DDRAW_dump_flags(in->dwCaps2, flags2, ARRAY_SIZE(flags2));
773 }
#define DDSCAPS_3DDEVICE
Definition: ddraw.h:263
#define DDSCAPS2_HINTSTATIC
Definition: ddraw.h:284
#define DDSCAPS_WRITEONLY
Definition: ddraw.h:266
#define DDSCAPS_PALETTE
Definition: ddraw.h:257
#define DDSCAPS2_DONOTPERSIST
Definition: ddraw.h:306
#define DDSCAPS_TEXTURE
Definition: ddraw.h:262
#define DDSCAPS2_CUBEMAP_NEGATIVEX
Definition: ddraw.h:292
#define DDSCAPS_NONLOCALVIDMEM
Definition: ddraw.h:277
#define DDSCAPS_OWNDC
Definition: ddraw.h:268
#define DDSCAPS2_D3DTEXTUREMANAGE
Definition: ddraw.h:305
#define DDSCAPS2_CUBEMAP
Definition: ddraw.h:290
#define DDSCAPS_ALPHA
Definition: ddraw.h:250
#define DDSCAPS_LIVEVIDEO
Definition: ddraw.h:269
#define DDSCAPS_RESERVED1
Definition: ddraw.h:249
#define DDSCAPS2_STEREOSURFACELEFT
Definition: ddraw.h:307
#define DDSCAPS_FLIP
Definition: ddraw.h:253
#define DDSCAPS_VISIBLE
Definition: ddraw.h:265
#define DDSCAPS2_MIPMAPSUBLEVEL
Definition: ddraw.h:304
#define DDSCAPS_HWCODEC
Definition: ddraw.h:270
#define DDSCAPS_VIDEOPORT
Definition: ddraw.h:275
#define DDSCAPS_SYSTEMMEMORY
Definition: ddraw.h:261
#define DDSCAPS_FRONTBUFFER
Definition: ddraw.h:254
#define DDSCAPS2_TEXTUREMANAGE
Definition: ddraw.h:285
#define DDSCAPS_ZBUFFER
Definition: ddraw.h:267
#define DDSCAPS_ALLOCONLOAD
Definition: ddraw.h:274
#define DDSCAPS_STANDARDVGAMODE
Definition: ddraw.h:278
#define DDSCAPS_VIDEOMEMORY
Definition: ddraw.h:264
#define DDSCAPS2_HINTANTIALIASING
Definition: ddraw.h:289
#define DDSCAPS_RESERVED2
Definition: ddraw.h:273
#define DDSCAPS_COMPLEX
Definition: ddraw.h:252
#define DDSCAPS2_CUBEMAP_POSITIVEX
Definition: ddraw.h:291
#define DDSCAPS2_CUBEMAP_NEGATIVEZ
Definition: ddraw.h:296
#define DDSCAPS_MIPMAP
Definition: ddraw.h:272
#define DDSCAPS2_OPAQUE
Definition: ddraw.h:288
#define DDSCAPS2_HARDWAREDEINTERLACE
Definition: ddraw.h:281
static void DDRAW_dump_flags_nolf(DWORD flags, const struct flag_info *names, size_t num_names)
Definition: utils.c:697
#define FE(x)
#define DDSCAPS2_HINTDYNAMIC
Definition: ddraw.h:283
GLbitfield flags
Definition: glext.h:7161
#define DDSCAPS2_RESERVED2
Definition: ddraw.h:287
#define DDSCAPS2_CUBEMAP_POSITIVEY
Definition: ddraw.h:293
#define DDSCAPS_LOCALVIDMEM
Definition: ddraw.h:276
#define DDSCAPS2_RESERVED1
Definition: ddraw.h:286
#define DDSCAPS_OVERLAY
Definition: ddraw.h:256
#define DDSCAPS_MODEX
Definition: ddraw.h:271
#define DDSCAPS_BACKBUFFER
Definition: ddraw.h:251
GLuint in
Definition: glext.h:9616
#define ARRAY_SIZE(a)
Definition: main.h:24
#define DDSCAPS_PRIMARYSURFACE
Definition: ddraw.h:258
#define DDSCAPS2_CUBEMAP_POSITIVEZ
Definition: ddraw.h:295
#define DDSCAPS_PRIMARYSURFACELEFT
Definition: ddraw.h:260
#define DDSCAPS_OFFSCREENPLAIN
Definition: ddraw.h:255
#define DDSCAPS_OPTIMIZED
Definition: ddraw.h:279
static void DDRAW_dump_flags(DWORD flags, const struct flag_info *names, size_t num_names)
Definition: utils.c:707
#define DDSCAPS2_CUBEMAP_NEGATIVEY
Definition: ddraw.h:294

Referenced by ddraw7_GetAvailableVidMem(), DDRAW_dump_DDCAPS(), DDRAW_dump_DDSCAPS(), and DDRAW_dump_surface_desc().

◆ DDRAW_dump_DWORD()

static void DDRAW_dump_DWORD ( const void in)
static

Definition at line 682 of file utils.c.

683 {
684  TRACE("%d\n", *((const DWORD *) in));
685 }
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint in
Definition: glext.h:9616

Referenced by DDRAW_dump_surface_desc().

◆ DDRAW_dump_flags()

static void DDRAW_dump_flags ( DWORD  flags,
const struct flag_info names,
size_t  num_names 
)
static

Definition at line 707 of file utils.c.

708 {
710  TRACE("\n");
711 }
GLuint GLuint * names
Definition: glext.h:11545
static int num_names
Definition: apinames.c:56
#define TRACE(s)
Definition: solgame.cpp:4
static void DDRAW_dump_flags_nolf(DWORD flags, const struct flag_info *names, size_t num_names)
Definition: utils.c:697
GLbitfield flags
Definition: glext.h:7161

Referenced by DDRAW_dump_cooperativelevel(), DDRAW_dump_DDCAPS(), and DDRAW_dump_DDSCAPS2().

◆ DDRAW_dump_flags_nolf()

static void DDRAW_dump_flags_nolf ( DWORD  flags,
const struct flag_info names,
size_t  num_names 
)
static

Definition at line 697 of file utils.c.

698 {
699  unsigned int i;
700 
701  for (i=0; i < num_names; i++)
702  if ((flags & names[i].val) || /* standard flag value */
703  ((!flags) && (!names[i].val))) /* zero value only */
704  TRACE("%s ", names[i].name);
705 }
GLuint GLuint * names
Definition: glext.h:11545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static int num_names
Definition: apinames.c:56
GLuint GLfloat * val
Definition: glext.h:7180
#define TRACE(s)
Definition: solgame.cpp:4
GLbitfield flags
Definition: glext.h:7161
Definition: name.c:36

Referenced by DDRAW_dump_DDSCAPS2(), DDRAW_dump_flags(), and DDRAW_dump_pixelformat_flag().

◆ DDRAW_dump_members()

static void DDRAW_dump_members ( DWORD  flags,
const void data,
const struct member_info mems,
size_t  num_mems 
)
static

Definition at line 812 of file utils.c.

813 {
814  unsigned int i;
815 
816  for (i=0; i < num_mems; i++)
817  {
818  if (mems[i].val & flags)
819  {
820  TRACE(" - %s : ", mems[i].name);
821  mems[i].func((const char *)data + mems[i].offset);
822  }
823  }
824 }
void(* func)(const void *)
GLintptr offset
Definition: glext.h:5920
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLuint GLfloat * val
Definition: glext.h:7180
#define TRACE(s)
Definition: solgame.cpp:4
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLbitfield flags
Definition: glext.h:7161
Definition: name.c:36

Referenced by DDRAW_dump_surface_desc().

◆ DDRAW_dump_pixelformat()

static void DDRAW_dump_pixelformat ( const DDPIXELFORMAT pf)
static

Definition at line 827 of file utils.c.

828 {
829  TRACE("( ");
831  if (pf->dwFlags & DDPF_FOURCC)
832  TRACE(", dwFourCC code '%c%c%c%c' (0x%08x) - %u bits per pixel",
833  (unsigned char)( pf->dwFourCC &0xff),
834  (unsigned char)((pf->dwFourCC>> 8)&0xff),
835  (unsigned char)((pf->dwFourCC>>16)&0xff),
836  (unsigned char)((pf->dwFourCC>>24)&0xff),
837  pf->dwFourCC,
838  pf->u1.dwYUVBitCount);
839  if (pf->dwFlags & DDPF_RGB)
840  {
841  TRACE(", RGB bits: %u, R 0x%08x G 0x%08x B 0x%08x",
842  pf->u1.dwRGBBitCount,
843  pf->u2.dwRBitMask,
844  pf->u3.dwGBitMask,
845  pf->u4.dwBBitMask);
846  if (pf->dwFlags & DDPF_ALPHAPIXELS)
847  TRACE(" A 0x%08x", pf->u5.dwRGBAlphaBitMask);
848  if (pf->dwFlags & DDPF_ZPIXELS)
849  TRACE(" Z 0x%08x", pf->u5.dwRGBZBitMask);
850  }
851  if (pf->dwFlags & DDPF_ZBUFFER)
852  TRACE(", Z bits: %u", pf->u1.dwZBufferBitDepth);
853  if (pf->dwFlags & DDPF_ALPHA)
854  TRACE(", Alpha bits: %u", pf->u1.dwAlphaBitDepth);
855  if (pf->dwFlags & DDPF_BUMPDUDV)
856  TRACE(", Bump bits: %u, U 0x%08x V 0x%08x L 0x%08x",
857  pf->u1.dwBumpBitCount,
858  pf->u2.dwBumpDuBitMask,
859  pf->u3.dwBumpDvBitMask,
860  pf->u4.dwBumpLuminanceBitMask);
861  TRACE(")\n");
862 }
#define DDPF_BUMPDUDV
Definition: ddraw.h:519
DWORD dwFlags
Definition: ddraw.h:1071
static void DDRAW_dump_pixelformat_flag(DWORD flagmask)
Definition: utils.c:789
DWORD dwBumpDuBitMask
Definition: ddraw.h:1089
DWORD dwRGBZBitMask
Definition: ddraw.h:1116
#define DDPF_ALPHA
Definition: ddraw.h:502
#define DDPF_ZPIXELS
Definition: ddraw.h:514
DWORD dwGBitMask
Definition: ddraw.h:1094
#define DDPF_FOURCC
Definition: ddraw.h:503
#define TRACE(s)
Definition: solgame.cpp:4
DWORD dwRGBBitCount
Definition: ddraw.h:1075
#define DDPF_RGB
Definition: ddraw.h:507
DWORD dwRBitMask
Definition: ddraw.h:1085
#define DDPF_ALPHAPIXELS
Definition: ddraw.h:501
DWORD dwFourCC
Definition: ddraw.h:1072
DWORD dwYUVBitCount
Definition: ddraw.h:1076
DWORD dwAlphaBitDepth
Definition: ddraw.h:1078
DWORD dwBumpLuminanceBitMask
Definition: ddraw.h:1109
DWORD dwBBitMask
Definition: ddraw.h:1106
DWORD dwZBufferBitDepth
Definition: ddraw.h:1077
#define DDPF_ZBUFFER
Definition: ddraw.h:511
DWORD dwBumpDvBitMask
Definition: ddraw.h:1097
DWORD dwBumpBitCount
Definition: ddraw.h:1080
DWORD dwRGBAlphaBitMask
Definition: ddraw.h:1113

Referenced by DDRAW_dump_surface_desc(), ddrawformat_from_wined3dformat(), wined3d_colour_from_ddraw_colour(), and wined3dformat_from_ddrawformat().

◆ DDRAW_dump_pixelformat_flag()

static void DDRAW_dump_pixelformat_flag ( DWORD  flagmask)
static

Definition at line 789 of file utils.c.

790 {
791  static const struct flag_info flags[] =
792  {
794  FE(DDPF_ALPHA),
795  FE(DDPF_FOURCC),
799  FE(DDPF_RGB),
801  FE(DDPF_RGBTOYUV),
802  FE(DDPF_YUV),
803  FE(DDPF_ZBUFFER),
807  };
808 
810 }
#define DDPF_ALPHA
Definition: ddraw.h:502
#define DDPF_ZPIXELS
Definition: ddraw.h:514
#define DDPF_FOURCC
Definition: ddraw.h:503
#define DDPF_PALETTEINDEXED4
Definition: ddraw.h:504
#define DDPF_PALETTEINDEXED2
Definition: ddraw.h:513
#define DDPF_RGB
Definition: ddraw.h:507
static void DDRAW_dump_flags_nolf(DWORD flags, const struct flag_info *names, size_t num_names)
Definition: utils.c:697
#define FE(x)
GLbitfield flags
Definition: glext.h:7161
#define DDPF_RGBTOYUV
Definition: ddraw.h:509
#define DDPF_PALETTEINDEXED8
Definition: ddraw.h:506
#define DDPF_ALPHAPIXELS
Definition: ddraw.h:501
#define ARRAY_SIZE(a)
Definition: main.h:24
#define DDPF_PALETTEINDEXED1
Definition: ddraw.h:512
#define DDPF_YUV
Definition: ddraw.h:510
#define DDPF_ZBUFFER
Definition: ddraw.h:511
#define DDPF_COMPRESSED
Definition: ddraw.h:508
#define DDPF_PALETTEINDEXEDTO8
Definition: ddraw.h:505

Referenced by DDRAW_dump_pixelformat().

◆ DDRAW_dump_PTR()

static void DDRAW_dump_PTR ( const void in)
static

Definition at line 687 of file utils.c.

688 {
689  TRACE("%p\n", *((const void * const*) in));
690 }
#define TRACE(s)
Definition: solgame.cpp:4
GLuint in
Definition: glext.h:9616

Referenced by DDRAW_dump_surface_desc().

◆ DDRAW_dump_surface_desc()

void DDRAW_dump_surface_desc ( const DDSURFACEDESC2 lpddsd)

Definition at line 864 of file utils.c.

865 {
866 #define STRUCT DDSURFACEDESC2
867  static const struct member_info members[] =
868  {
871  ME(DDSD_PITCH, DDRAW_dump_DWORD, u1 /* lPitch */),
872  ME(DDSD_LINEARSIZE, DDRAW_dump_DWORD, u1 /* dwLinearSize */),
873  ME(DDSD_BACKBUFFERCOUNT, DDRAW_dump_DWORD, u5.dwBackBufferCount),
874  ME(DDSD_MIPMAPCOUNT, DDRAW_dump_DWORD, u2 /* dwMipMapCount */),
875  ME(DDSD_ZBUFFERBITDEPTH, DDRAW_dump_DWORD, u2 /* dwZBufferBitDepth */), /* This is for 'old-style' D3D */
876  ME(DDSD_REFRESHRATE, DDRAW_dump_DWORD, u2 /* dwRefreshRate */),
878  ME(DDSD_LPSURFACE, DDRAW_dump_PTR, lpSurface),
879  ME(DDSD_CKDESTOVERLAY, DDRAW_dump_DDCOLORKEY, u3 /* ddckCKDestOverlay */),
880  ME(DDSD_CKDESTBLT, DDRAW_dump_DDCOLORKEY, ddckCKDestBlt),
881  ME(DDSD_CKSRCOVERLAY, DDRAW_dump_DDCOLORKEY, ddckCKSrcOverlay),
882  ME(DDSD_CKSRCBLT, DDRAW_dump_DDCOLORKEY, ddckCKSrcBlt),
883  ME(DDSD_PIXELFORMAT, DDRAW_dump_pixelformat, u4 /* ddpfPixelFormat */)
884  };
885  static const struct member_info members_caps[] =
886  {
887  ME(DDSD_CAPS, DDRAW_dump_DDSCAPS, ddsCaps)
888  };
889  static const struct member_info members_caps2[] =
890  {
891  ME(DDSD_CAPS, DDRAW_dump_DDSCAPS2, ddsCaps)
892  };
893 #undef STRUCT
894 
895  if (NULL == lpddsd)
896  {
897  TRACE("(null)\n");
898  }
899  else
900  {
901  if (lpddsd->dwSize >= sizeof(DDSURFACEDESC2))
902  {
903  DDRAW_dump_members(lpddsd->dwFlags, lpddsd, members_caps2, 1);
904  }
905  else
906  {
907  DDRAW_dump_members(lpddsd->dwFlags, lpddsd, members_caps, 1);
908  }
909  DDRAW_dump_members(lpddsd->dwFlags, lpddsd, members, ARRAY_SIZE(members));
910  }
911 }
#define DDSD_CKDESTOVERLAY
Definition: ddraw.h:217
GLdouble GLdouble u2
Definition: glext.h:8308
DWORD dwFlags
Definition: ddraw.h:1153
#define DDSD_LPSURFACE
Definition: ddrawex.h:22
#define DDSD_CKSRCBLT
Definition: ddraw.h:220
GLdouble u1
Definition: glext.h:8308
void DDRAW_dump_DDSCAPS2(const DDSCAPS2 *in)
Definition: utils.c:713
#define DDSD_BACKBUFFERCOUNT
Definition: ddraw.h:212
#define DDSD_CAPS
Definition: ddraw.h:208
smooth NULL
Definition: ftsmooth.c:416
static void DDRAW_dump_PTR(const void *in)
Definition: utils.c:687
#define DDSD_CKSRCOVERLAY
Definition: ddraw.h:219
static const WCHAR dwHeight[]
Definition: provider.c:63
#define DDSD_CKDESTBLT
Definition: ddraw.h:218
#define DDSD_ALPHABITDEPTH
Definition: ddraw.h:214
#define DDSD_HEIGHT
Definition: ddraw.h:209
#define TRACE(s)
Definition: solgame.cpp:4
DWORD dwSize
Definition: ddraw.h:1152
static BYTE u4[]
Definition: msg.c:588
static void DDRAW_dump_members(DWORD flags, const void *data, const struct member_info *mems, size_t num_mems)
Definition: utils.c:812
static BYTE u5[]
Definition: msg.c:590
static void DDRAW_dump_pixelformat(const DDPIXELFORMAT *pf)
Definition: utils.c:827
#define DDSD_WIDTH
Definition: ddraw.h:210
#define DDSD_ZBUFFERBITDEPTH
Definition: ddraw.h:213
#define DDSD_PIXELFORMAT
Definition: ddraw.h:216
#define DDSD_MIPMAPCOUNT
Definition: ddraw.h:221
#define DDSD_REFRESHRATE
Definition: ddraw.h:222
DWORD dwAlphaBitDepth
Definition: ddraw.h:1076
#define ARRAY_SIZE(a)
Definition: main.h:24
static BYTE u3[]
Definition: msg.c:580
#define DDSD_LINEARSIZE
Definition: ddraw.h:223
#define ME(x, f, e)
static void DDRAW_dump_DWORD(const void *in)
Definition: utils.c:682
static const WCHAR dwWidth[]
Definition: provider.c:62
static void DDRAW_dump_DDSCAPS(const DDSCAPS *in)
Definition: utils.c:776
#define DDSD_PITCH
Definition: ddraw.h:211
static void DDRAW_dump_DDCOLORKEY(const DDCOLORKEY *ddck)
Definition: utils.c:692

Referenced by ddraw2_CreateSurface(), ddraw4_CreateSurface(), ddraw7_CreateSurface(), ddraw7_GetDisplayMode(), ddraw_surface3_GetSurfaceDesc(), ddraw_surface7_GetSurfaceDesc(), ddraw_surface_create(), and surface_lock().

◆ ddrawformat_from_wined3dformat()

void ddrawformat_from_wined3dformat ( DDPIXELFORMAT DDPixelFormat,
enum wined3d_format_id  wined3d_format 
)

Definition at line 33 of file utils.c.

34 {
35  DWORD Size = DDPixelFormat->dwSize;
36 
37  if(Size==0) return;
38 
39  memset(DDPixelFormat, 0x00, Size);
40  DDPixelFormat->dwSize = Size;
41  switch (wined3d_format)
42  {
44  DDPixelFormat->dwFlags = DDPF_RGB;
45  DDPixelFormat->dwFourCC = 0;
46  DDPixelFormat->u1.dwRGBBitCount = 24;
47  DDPixelFormat->u2.dwRBitMask = 0x00ff0000;
48  DDPixelFormat->u3.dwGBitMask = 0x0000ff00;
49  DDPixelFormat->u4.dwBBitMask = 0x000000ff;
50  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
51  break;
52 
54  DDPixelFormat->dwFlags = DDPF_RGB | DDPF_ALPHAPIXELS;
55  DDPixelFormat->dwFourCC = 0;
56  DDPixelFormat->u1.dwRGBBitCount = 32;
57  DDPixelFormat->u2.dwRBitMask = 0x00ff0000;
58  DDPixelFormat->u3.dwGBitMask = 0x0000ff00;
59  DDPixelFormat->u4.dwBBitMask = 0x000000ff;
60  DDPixelFormat->u5.dwRGBAlphaBitMask = 0xff000000;
61  break;
62 
64  DDPixelFormat->dwFlags = DDPF_RGB;
65  DDPixelFormat->dwFourCC = 0;
66  DDPixelFormat->u1.dwRGBBitCount = 32;
67  DDPixelFormat->u2.dwRBitMask = 0x00ff0000;
68  DDPixelFormat->u3.dwGBitMask = 0x0000ff00;
69  DDPixelFormat->u4.dwBBitMask = 0x000000ff;
70  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
71  break;
72 
74  DDPixelFormat->dwFlags = DDPF_RGB;
75  DDPixelFormat->dwFourCC = 0;
76  DDPixelFormat->u1.dwRGBBitCount = 32;
77  DDPixelFormat->u2.dwRBitMask = 0x000000ff;
78  DDPixelFormat->u3.dwGBitMask = 0x0000ff00;
79  DDPixelFormat->u4.dwBBitMask = 0x00ff0000;
80  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
81  break;
82 
84  DDPixelFormat->dwFlags = DDPF_RGB;
85  DDPixelFormat->dwFourCC = 0;
86  DDPixelFormat->u1.dwRGBBitCount = 16;
87  DDPixelFormat->u2.dwRBitMask = 0xF800;
88  DDPixelFormat->u3.dwGBitMask = 0x07E0;
89  DDPixelFormat->u4.dwBBitMask = 0x001F;
90  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
91  break;
92 
94  DDPixelFormat->dwFlags = DDPF_RGB;
95  DDPixelFormat->dwFourCC = 0;
96  DDPixelFormat->u1.dwRGBBitCount = 16;
97  DDPixelFormat->u2.dwRBitMask = 0x7C00;
98  DDPixelFormat->u3.dwGBitMask = 0x03E0;
99  DDPixelFormat->u4.dwBBitMask = 0x001F;
100  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
101  break;
102 
104  DDPixelFormat->dwFlags = DDPF_RGB | DDPF_ALPHAPIXELS;
105  DDPixelFormat->dwFourCC = 0;
106  DDPixelFormat->u1.dwRGBBitCount = 16;
107  DDPixelFormat->u2.dwRBitMask = 0x7C00;
108  DDPixelFormat->u3.dwGBitMask = 0x03E0;
109  DDPixelFormat->u4.dwBBitMask = 0x001F;
110  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x8000;
111  break;
112 
114  DDPixelFormat->dwFlags = DDPF_RGB | DDPF_ALPHAPIXELS;
115  DDPixelFormat->dwFourCC = 0;
116  DDPixelFormat->u1.dwRGBBitCount = 16;
117  DDPixelFormat->u2.dwRBitMask = 0x0F00;
118  DDPixelFormat->u3.dwGBitMask = 0x00F0;
119  DDPixelFormat->u4.dwBBitMask = 0x000F;
120  DDPixelFormat->u5.dwRGBAlphaBitMask = 0xF000;
121  break;
122 
124  DDPixelFormat->dwFlags = DDPF_RGB;
125  DDPixelFormat->dwFourCC = 0;
126  DDPixelFormat->u1.dwRGBBitCount = 8;
127  DDPixelFormat->u2.dwRBitMask = 0xE0;
128  DDPixelFormat->u3.dwGBitMask = 0x1C;
129  DDPixelFormat->u4.dwBBitMask = 0x03;
130  DDPixelFormat->u5.dwLuminanceAlphaBitMask = 0x0;
131  break;
132 
133  case WINED3DFMT_P8_UINT:
134  DDPixelFormat->dwFlags = DDPF_PALETTEINDEXED8 | DDPF_RGB;
135  DDPixelFormat->dwFourCC = 0;
136  DDPixelFormat->u1.dwRGBBitCount = 8;
137  DDPixelFormat->u2.dwRBitMask = 0x00;
138  DDPixelFormat->u3.dwGBitMask = 0x00;
139  DDPixelFormat->u4.dwBBitMask = 0x00;
140  break;
141 
142  case WINED3DFMT_A8_UNORM:
143  DDPixelFormat->dwFlags = DDPF_ALPHA;
144  DDPixelFormat->dwFourCC = 0;
145  DDPixelFormat->u1.dwAlphaBitDepth = 8;
146  DDPixelFormat->u2.dwRBitMask = 0x0;
147  DDPixelFormat->u3.dwZBitMask = 0x0;
148  DDPixelFormat->u4.dwStencilBitMask = 0x0;
149  DDPixelFormat->u5.dwLuminanceAlphaBitMask = 0x0;
150  break;
151 
153  DDPixelFormat->dwFlags = DDPF_RGB | DDPF_ALPHAPIXELS;
154  DDPixelFormat->dwFourCC = 0;
155  DDPixelFormat->u1.dwRGBBitCount = 16;
156  DDPixelFormat->u2.dwRBitMask = 0x00E0;
157  DDPixelFormat->u3.dwGBitMask = 0x001C;
158  DDPixelFormat->u4.dwBBitMask = 0x0003;
159  DDPixelFormat->u5.dwRGBAlphaBitMask = 0xFF00;
160  break;
161 
163  DDPixelFormat->dwFlags = DDPF_RGB;
164  DDPixelFormat->dwFourCC = 0;
165  DDPixelFormat->u1.dwRGBBitCount = 16;
166  DDPixelFormat->u2.dwRBitMask = 0x0F00;
167  DDPixelFormat->u3.dwGBitMask = 0x00F0;
168  DDPixelFormat->u4.dwBBitMask = 0x000F;
169  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
170  break;
171 
172  /* How are Z buffer bit depth and Stencil buffer bit depth related?
173  */
175  DDPixelFormat->dwFlags = DDPF_ZBUFFER;
176  DDPixelFormat->dwFourCC = 0;
177  DDPixelFormat->u1.dwZBufferBitDepth = 16;
178  DDPixelFormat->u2.dwStencilBitDepth = 0;
179  DDPixelFormat->u3.dwZBitMask = 0x0000FFFF;
180  DDPixelFormat->u4.dwStencilBitMask = 0x0;
181  DDPixelFormat->u5.dwRGBZBitMask = 0x00000000;
182  break;
183 
185  DDPixelFormat->dwFlags = DDPF_ZBUFFER;
186  DDPixelFormat->dwFourCC = 0;
187  DDPixelFormat->u1.dwZBufferBitDepth = 32;
188  DDPixelFormat->u2.dwStencilBitDepth = 0;
189  DDPixelFormat->u3.dwZBitMask = 0xFFFFFFFF;
190  DDPixelFormat->u4.dwStencilBitMask = 0x0;
191  DDPixelFormat->u5.dwRGBZBitMask = 0x00000000;
192  break;
193 
195  DDPixelFormat->dwFlags = DDPF_ZBUFFER | DDPF_STENCILBUFFER;
196  DDPixelFormat->dwFourCC = 0;
197  /* Should I set dwZBufferBitDepth to 32 here? */
198  DDPixelFormat->u1.dwZBufferBitDepth = 32;
199  DDPixelFormat->u2.dwStencilBitDepth = 4;
200  DDPixelFormat->u3.dwZBitMask = 0x00FFFFFF;
201  DDPixelFormat->u4.dwStencilBitMask = 0x0F000000;
202  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
203  break;
204 
206  DDPixelFormat->dwFlags = DDPF_ZBUFFER | DDPF_STENCILBUFFER;
207  DDPixelFormat->dwFourCC = 0;
208  DDPixelFormat->u1.dwZBufferBitDepth = 32;
209  DDPixelFormat->u2.dwStencilBitDepth = 8;
210  DDPixelFormat->u3.dwZBitMask = 0x00FFFFFF;
211  DDPixelFormat->u4.dwStencilBitMask = 0xFF000000;
212  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
213  break;
214 
216  DDPixelFormat->dwFlags = DDPF_ZBUFFER;
217  DDPixelFormat->dwFourCC = 0;
218  DDPixelFormat->u1.dwZBufferBitDepth = 32;
219  DDPixelFormat->u2.dwStencilBitDepth = 0;
220  DDPixelFormat->u3.dwZBitMask = 0x00FFFFFF;
221  DDPixelFormat->u4.dwStencilBitMask = 0x00000000;
222  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
223  break;
224 
226  DDPixelFormat->dwFlags = DDPF_ZBUFFER | DDPF_STENCILBUFFER;
227  DDPixelFormat->dwFourCC = 0;
228  DDPixelFormat->u1.dwZBufferBitDepth = 16;
229  DDPixelFormat->u2.dwStencilBitDepth = 1;
230  DDPixelFormat->u3.dwZBitMask = 0x7fff;
231  DDPixelFormat->u4.dwStencilBitMask = 0x8000;
232  DDPixelFormat->u5.dwRGBAlphaBitMask = 0x0;
233  break;
234 
235  case WINED3DFMT_UYVY:
236  case WINED3DFMT_YUY2:
237  DDPixelFormat->u1.dwYUVBitCount = 16;
238  DDPixelFormat->dwFlags = DDPF_FOURCC;
239  DDPixelFormat->dwFourCC = wined3d_format;
240  break;
241 
242  case WINED3DFMT_YV12:
243  DDPixelFormat->u1.dwYUVBitCount = 12;
244  DDPixelFormat->dwFlags = DDPF_FOURCC;
245  DDPixelFormat->dwFourCC = wined3d_format;
246  break;
247 
248  case WINED3DFMT_DXT1:
249  case WINED3DFMT_DXT2:
250  case WINED3DFMT_DXT3:
251  case WINED3DFMT_DXT4:
252  case WINED3DFMT_DXT5:
256  DDPixelFormat->dwFlags = DDPF_FOURCC;
257  DDPixelFormat->dwFourCC = wined3d_format;
258  break;
259 
260  /* Luminance */
261  case WINED3DFMT_L8_UNORM:
262  DDPixelFormat->dwFlags = DDPF_LUMINANCE;
263  DDPixelFormat->dwFourCC = 0;
264  DDPixelFormat->u1.dwLuminanceBitCount = 8;
265  DDPixelFormat->u2.dwLuminanceBitMask = 0xff;
266  DDPixelFormat->u3.dwBumpDvBitMask = 0x0;
267  DDPixelFormat->u4.dwBumpLuminanceBitMask = 0x0;
268  DDPixelFormat->u5.dwLuminanceAlphaBitMask = 0x0;
269  break;
270 
272  DDPixelFormat->dwFlags = DDPF_ALPHAPIXELS | DDPF_LUMINANCE;
273  DDPixelFormat->dwFourCC = 0;
274  DDPixelFormat->u1.dwLuminanceBitCount = 4;
275  DDPixelFormat->u2.dwLuminanceBitMask = 0x0f;
276  DDPixelFormat->u3.dwBumpDvBitMask = 0x0;
277  DDPixelFormat->u4.dwBumpLuminanceBitMask = 0x0;
278  DDPixelFormat->u5.dwLuminanceAlphaBitMask = 0xf0;
279  break;
280 
282  DDPixelFormat->dwFlags = DDPF_ALPHAPIXELS | DDPF_LUMINANCE;
283  DDPixelFormat->dwFourCC = 0;
284  DDPixelFormat->u1.dwLuminanceBitCount = 16;
285  DDPixelFormat->u2.dwLuminanceBitMask = 0x00ff;
286  DDPixelFormat->u3.dwBumpDvBitMask = 0x0;
287  DDPixelFormat->u4.dwBumpLuminanceBitMask = 0x0;
288  DDPixelFormat->u5.dwLuminanceAlphaBitMask = 0xff00;
289  break;
290 
291  /* Bump mapping */
293  DDPixelFormat->dwFlags = DDPF_BUMPDUDV;
294  DDPixelFormat->dwFourCC = 0;
295  DDPixelFormat->u1.dwBumpBitCount = 16;
296  DDPixelFormat->u2.dwBumpDuBitMask = 0x000000ff;
297  DDPixelFormat->u3.dwBumpDvBitMask = 0x0000ff00;
298  DDPixelFormat->u4.dwBumpLuminanceBitMask = 0x00000000;
299  DDPixelFormat->u5.dwLuminanceAlphaBitMask = 0x00000000;
300  break;
301 
303  DDPixelFormat->dwFlags = DDPF_BUMPDUDV | DDPF_BUMPLUMINANCE;
304  DDPixelFormat->dwFourCC = 0;
305  DDPixelFormat->u1.dwBumpBitCount = 16;
306  DDPixelFormat->u2.dwBumpDuBitMask = 0x0000001f;
307  DDPixelFormat->u3.dwBumpDvBitMask = 0x000003e0;
308  DDPixelFormat->u4.dwBumpLuminanceBitMask = 0x0000fc00;
309  DDPixelFormat->u5.dwLuminanceAlphaBitMask = 0x00000000;
310  break;
311 
313  DDPixelFormat->dwFlags = DDPF_BUMPDUDV | DDPF_BUMPLUMINANCE;
314  DDPixelFormat->dwFourCC = 0;
315  DDPixelFormat->u1.dwBumpBitCount = 32;
316  DDPixelFormat->u2.dwBumpDuBitMask = 0x000000ff;
317  DDPixelFormat->u3.dwBumpDvBitMask = 0x0000ff00;
318  DDPixelFormat->u4.dwBumpLuminanceBitMask = 0x00ff0000;
319  DDPixelFormat->u5.dwLuminanceAlphaBitMask = 0x00000000;
320  break;
321 
322  default:
323  FIXME("Unhandled wined3d format %#x.\n", wined3d_format);
324  break;
325  }
326 
327  if(TRACE_ON(ddraw)) {
328  TRACE("Returning: ");
329  DDRAW_dump_pixelformat(DDPixelFormat);
330  }
331 }
#define DDPF_BUMPDUDV
Definition: ddraw.h:519
DWORD dwFlags
Definition: ddraw.h:1071
#define DDPF_LUMINANCE
Definition: ddraw.h:517
DWORD dwStencilBitMask
Definition: ddraw.h:1108
DWORD dwLuminanceAlphaBitMask
Definition: ddraw.h:1115
DWORD dwBumpDuBitMask
Definition: ddraw.h:1089
#define DDPF_BUMPLUMINANCE
Definition: ddraw.h:518
DWORD dwLuminanceBitMask
Definition: ddraw.h:1088
DWORD dwRGBZBitMask
Definition: ddraw.h:1116
#define DDPF_ALPHA
Definition: ddraw.h:502
#define FIXME(fmt,...)
Definition: debug.h:110
DWORD dwGBitMask
Definition: ddraw.h:1094
#define DDPF_FOURCC
Definition: ddraw.h:503
#define TRACE(s)
Definition: solgame.cpp:4
DWORD dwRGBBitCount
Definition: ddraw.h:1075
#define DDPF_RGB
Definition: ddraw.h:507
#define DDPF_STENCILBUFFER
Definition: ddraw.h:515
DWORD dwLuminanceBitCount
Definition: ddraw.h:1079
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD dwRBitMask
Definition: ddraw.h:1085
#define DDPF_PALETTEINDEXED8
Definition: ddraw.h:506
DWORD dwZBitMask
Definition: ddraw.h:1096
#define DDPF_ALPHAPIXELS
Definition: ddraw.h:501
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:359
DWORD dwFourCC
Definition: ddraw.h:1072
static void DDRAW_dump_pixelformat(const DDPIXELFORMAT *pf)
Definition: utils.c:827
DWORD dwStencilBitDepth
Definition: ddraw.h:1087
DWORD dwYUVBitCount
Definition: ddraw.h:1076
DWORD dwAlphaBitDepth
Definition: ddraw.h:1078
DWORD dwBumpLuminanceBitMask
Definition: ddraw.h:1109
DWORD dwBBitMask
Definition: ddraw.h:1106
DWORD dwZBufferBitDepth
Definition: ddraw.h:1077
#define DDPF_ZBUFFER
Definition: ddraw.h:511
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE_ON(x)
Definition: compat.h:65
DWORD dwSize
Definition: ddraw.h:1070
DWORD dwBumpDvBitMask
Definition: ddraw.h:1097
DWORD dwBumpBitCount
Definition: ddraw.h:1080
DWORD dwRGBAlphaBitMask
Definition: ddraw.h:1113

Referenced by d3d7_EnumZBufferFormats(), d3d_device2_EnumTextureFormats(), d3d_device3_GetRenderState(), d3d_device3_SetRenderState(), d3d_device3_SetTexture(), d3d_device7_EnumTextureFormats(), ddraw7_EnumDisplayModes(), ddraw7_GetDisplayMode(), ddraw7_SetDisplayMode(), and ddraw_surface_create().

◆ DDSD2_to_DDSD()

void DDSD2_to_DDSD ( const DDSURFACEDESC2 in,
DDSURFACEDESC out 
)

Definition at line 1262 of file utils.c.

1263 {
1264  memset(out, 0, sizeof(*out));
1265  out->dwSize = sizeof(*out);
1266  out->dwFlags = in->dwFlags;
1267  if (in->dwFlags & DDSD_WIDTH) out->dwWidth = in->dwWidth;
1268  if (in->dwFlags & DDSD_HEIGHT) out->dwHeight = in->dwHeight;
1269  if (in->dwFlags & DDSD_PIXELFORMAT)
1270  {
1271  out->ddpfPixelFormat = in->u4.ddpfPixelFormat;
1272  if ((in->dwFlags & DDSD_CAPS) && (in->ddsCaps.dwCaps & DDSCAPS_ZBUFFER))
1273  {
1274  /* Z buffers have DDSD_ZBUFFERBITDEPTH set, but not DDSD_PIXELFORMAT. They do
1275  * have valid data in ddpfPixelFormat though */
1276  out->dwFlags &= ~DDSD_PIXELFORMAT;
1277  out->dwFlags |= DDSD_ZBUFFERBITDEPTH;
1278  out->u2.dwZBufferBitDepth = in->u4.ddpfPixelFormat.u1.dwZBufferBitDepth;
1279  }
1280  }
1281  /* ddsCaps is read even without DDSD_CAPS set. See dsurface:no_ddsd_caps_test */
1282  out->ddsCaps.dwCaps = in->ddsCaps.dwCaps;
1283  if (in->dwFlags & DDSD_PITCH) out->u1.lPitch = in->u1.lPitch;
1284  if (in->dwFlags & DDSD_BACKBUFFERCOUNT) out->dwBackBufferCount = in->u5.dwBackBufferCount;
1285  if (in->dwFlags & DDSD_ZBUFFERBITDEPTH) out->u2.dwZBufferBitDepth = in->u2.dwMipMapCount; /* same union */
1286  if (in->dwFlags & DDSD_ALPHABITDEPTH) out->dwAlphaBitDepth = in->dwAlphaBitDepth;
1287  /* DDraw(native, and wine) does not set the DDSD_LPSURFACE, so always copy */
1288  out->lpSurface = in->lpSurface;
1289  if (in->dwFlags & DDSD_CKDESTOVERLAY) out->ddckCKDestOverlay = in->u3.ddckCKDestOverlay;
1290  if (in->dwFlags & DDSD_CKDESTBLT) out->ddckCKDestBlt = in->ddckCKDestBlt;
1291  if (in->dwFlags & DDSD_CKSRCOVERLAY) out->ddckCKSrcOverlay = in->ddckCKSrcOverlay;
1292  if (in->dwFlags & DDSD_CKSRCBLT) out->ddckCKSrcBlt = in->ddckCKSrcBlt;
1293  if (in->dwFlags & DDSD_MIPMAPCOUNT) out->u2.dwMipMapCount = in->u2.dwMipMapCount;
1294  if (in->dwFlags & DDSD_REFRESHRATE) out->u2.dwRefreshRate = in->u2.dwRefreshRate;
1295  if (in->dwFlags & DDSD_LINEARSIZE) out->u1.dwLinearSize = in->u1.dwLinearSize;
1296  /* Does not exist in DDSURFACEDESC:
1297  * DDSD_TEXTURESTAGE, DDSD_FVF, DDSD_SRCVBHANDLE,
1298  */
1299  if (in->dwFlags & DDSD_TEXTURESTAGE) WARN("Does not exist in DDSURFACEDESC: DDSD_TEXTURESTAGE\n");
1300  if (in->dwFlags & DDSD_FVF) WARN("Does not exist in DDSURFACEDESC: DDSD_FVF\n");
1301  if (in->dwFlags & DDSD_SRCVBHANDLE) WARN("Does not exist in DDSURFACEDESC: DDSD_SRCVBHANDLE\n");
1302  out->dwFlags &= ~(DDSD_TEXTURESTAGE | DDSD_FVF | DDSD_SRCVBHANDLE);
1303 }
#define DDSD_CKDESTOVERLAY
Definition: ddraw.h:217
#define WARN(fmt,...)
Definition: debug.h:111
#define DDSD_CKSRCBLT
Definition: ddraw.h:220
#define DDSD_BACKBUFFERCOUNT
Definition: ddraw.h:212
#define DDSD_CAPS
Definition: ddraw.h:208
#define DDSD_CKSRCOVERLAY
Definition: ddraw.h:219
#define DDSCAPS_ZBUFFER
Definition: ddraw.h:267
#define DDSD_CKDESTBLT
Definition: ddraw.h:218
#define DDSD_ALPHABITDEPTH
Definition: ddraw.h:214
#define DDSD_HEIGHT
Definition: ddraw.h:209
#define DDSD_SRCVBHANDLE
Definition: ddraw.h:226
static FILE * out
Definition: regtests2xml.c:44
#define DDSD_FVF
Definition: ddraw.h:225
#define DDSD_WIDTH
Definition: ddraw.h:210
#define DDSD_ZBUFFERBITDEPTH
Definition: ddraw.h:213
#define DDSD_PIXELFORMAT
Definition: ddraw.h:216
#define DDSD_MIPMAPCOUNT
Definition: ddraw.h:221
#define DDSD_REFRESHRATE
Definition: ddraw.h:222
GLuint in
Definition: glext.h:9616
#define DDSD_TEXTURESTAGE
Definition: ddraw.h:224
#define DDSD_LINEARSIZE
Definition: ddraw.h:223
#define memset(x, y, z)
Definition: compat.h:39
#define DDSD_PITCH
Definition: ddraw.h:211

Referenced by ddraw_surface1_Lock(), ddraw_surface2_Lock(), ddraw_surface3_GetSurfaceDesc(), ddraw_surface3_Lock(), and EnumDisplayModesCallbackThunk().

◆ DDSD_to_DDSD2()

void DDSD_to_DDSD2 ( const DDSURFACEDESC in,
DDSURFACEDESC2 out 
)

Definition at line 1218 of file utils.c.

1219 {
1220  /* The output of this function is never passed to the application directly, so
1221  * the memset is not strictly needed. CreateSurface still has problems with this
1222  * though. Don't forget to set ddsCaps.dwCaps2/3/4 to 0 when removing this */
1223  memset(out, 0x00, sizeof(*out));
1224  out->dwSize = sizeof(*out);
1225  out->dwFlags = in->dwFlags & ~DDSD_ZBUFFERBITDEPTH;
1226  if (in->dwFlags & DDSD_WIDTH) out->dwWidth = in->dwWidth;
1227  if (in->dwFlags & DDSD_HEIGHT) out->dwHeight = in->dwHeight;
1228  if (in->dwFlags & DDSD_PIXELFORMAT) out->u4.ddpfPixelFormat = in->ddpfPixelFormat;
1229  else if(in->dwFlags & DDSD_ZBUFFERBITDEPTH)
1230  {
1231  out->dwFlags |= DDSD_PIXELFORMAT;
1232  memset(&out->u4.ddpfPixelFormat, 0, sizeof(out->u4.ddpfPixelFormat));
1233  out->u4.ddpfPixelFormat.dwSize = sizeof(out->u4.ddpfPixelFormat);
1234  out->u4.ddpfPixelFormat.dwFlags = DDPF_ZBUFFER;
1235  out->u4.ddpfPixelFormat.u1.dwZBufferBitDepth = in->u2.dwZBufferBitDepth;
1236  /* 0 is not a valid DDSURFACEDESC / DDPIXELFORMAT on either side of the
1237  * conversion */
1238  out->u4.ddpfPixelFormat.u3.dwZBitMask = ~0U >> (32 - in->u2.dwZBufferBitDepth);
1239  }
1240  /* ddsCaps is read even without DDSD_CAPS set. See dsurface:no_ddsd_caps_test */
1241  out->ddsCaps.dwCaps = in->ddsCaps.dwCaps;
1242  if (in->dwFlags & DDSD_PITCH) out->u1.lPitch = in->u1.lPitch;
1243  if (in->dwFlags & DDSD_BACKBUFFERCOUNT) out->u5.dwBackBufferCount = in->dwBackBufferCount;
1244  if (in->dwFlags & DDSD_ALPHABITDEPTH) out->dwAlphaBitDepth = in->dwAlphaBitDepth;
1245  /* DDraw(native, and wine) does not set the DDSD_LPSURFACE, so always copy */
1246  out->lpSurface = in->lpSurface;
1247  if (in->dwFlags & DDSD_CKDESTOVERLAY) out->u3.ddckCKDestOverlay = in->ddckCKDestOverlay;
1248  if (in->dwFlags & DDSD_CKDESTBLT) out->ddckCKDestBlt = in->ddckCKDestBlt;
1249  if (in->dwFlags & DDSD_CKSRCOVERLAY) out->ddckCKSrcOverlay = in->ddckCKSrcOverlay;
1250  if (in->dwFlags & DDSD_CKSRCBLT) out->ddckCKSrcBlt = in->ddckCKSrcBlt;
1251  if (in->dwFlags & DDSD_MIPMAPCOUNT) out->u2.dwMipMapCount = in->u2.dwMipMapCount;
1252  if (in->dwFlags & DDSD_REFRESHRATE) out->u2.dwRefreshRate = in->u2.dwRefreshRate;
1253  if (in->dwFlags & DDSD_LINEARSIZE) out->u1.dwLinearSize = in->u1.dwLinearSize;
1254  /* Does not exist in DDSURFACEDESC:
1255  * DDSD_TEXTURESTAGE, DDSD_FVF, DDSD_SRCVBHANDLE,
1256  */
1257 }
#define DDSD_CKDESTOVERLAY
Definition: ddraw.h:217
#define U(x)
Definition: wordpad.c:44
#define DDSD_CKSRCBLT
Definition: ddraw.h:220
#define DDSD_BACKBUFFERCOUNT
Definition: ddraw.h:212
#define DDSD_CKSRCOVERLAY
Definition: ddraw.h:219
#define DDSD_CKDESTBLT
Definition: ddraw.h:218
#define DDSD_ALPHABITDEPTH
Definition: ddraw.h:214
#define DDSD_HEIGHT
Definition: ddraw.h:209
static FILE * out
Definition: regtests2xml.c:44
#define DDSD_WIDTH
Definition: ddraw.h:210
#define DDSD_ZBUFFERBITDEPTH
Definition: ddraw.h:213
#define DDSD_PIXELFORMAT
Definition: ddraw.h:216
#define DDSD_MIPMAPCOUNT
Definition: ddraw.h:221
#define DDSD_REFRESHRATE
Definition: ddraw.h:222
GLuint in
Definition: glext.h:9616
#define DDPF_ZBUFFER
Definition: ddraw.h:511
#define DDSD_LINEARSIZE
Definition: ddraw.h:223
#define memset(x, y, z)
Definition: compat.h:39
#define DDSD_PITCH
Definition: ddraw.h:211

Referenced by ddraw1_CreateSurface(), ddraw1_EnumDisplayModes(), ddraw1_EnumSurfaces(), ddraw2_CreateSurface(), ddraw2_EnumDisplayModes(), ddraw2_EnumSurfaces(), ddraw_surface1_Initialize(), ddraw_surface2_Initialize(), ddraw_surface3_Initialize(), and ddraw_surface3_SetSurfaceDesc().

◆ dump_D3DMATRIX()

void dump_D3DMATRIX ( const D3DMATRIX mat)

Definition at line 914 of file utils.c.

915 {
916  TRACE(" %f %f %f %f\n", mat->_11, mat->_12, mat->_13, mat->_14);
917  TRACE(" %f %f %f %f\n", mat->_21, mat->_22, mat->_23, mat->_24);
918  TRACE(" %f %f %f %f\n", mat->_31, mat->_32, mat->_33, mat->_34);
919  TRACE(" %f %f %f %f\n", mat->_41, mat->_42, mat->_43, mat->_44);
920 }
static const MAT2 mat
Definition: font.c:66
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by d3d_device1_SetMatrix().

◆ get_flexible_vertex_size()

DWORD get_flexible_vertex_size ( DWORD  d3dvtVertexType)

Definition at line 923 of file utils.c.

924 {
925  DWORD size = 0;
926  DWORD i;
927 
928  if (d3dvtVertexType & D3DFVF_NORMAL) size += 3 * sizeof(D3DVALUE);
929  if (d3dvtVertexType & D3DFVF_DIFFUSE) size += sizeof(DWORD);
930  if (d3dvtVertexType & D3DFVF_SPECULAR) size += sizeof(DWORD);
931  if (d3dvtVertexType & D3DFVF_RESERVED1) size += sizeof(DWORD);
932  switch (d3dvtVertexType & D3DFVF_POSITION_MASK)
933  {
934  case D3DFVF_XYZ: size += 3 * sizeof(D3DVALUE); break;
935  case D3DFVF_XYZRHW: size += 4 * sizeof(D3DVALUE); break;
936  case D3DFVF_XYZB1: size += 4 * sizeof(D3DVALUE); break;
937  case D3DFVF_XYZB2: size += 5 * sizeof(D3DVALUE); break;
938  case D3DFVF_XYZB3: size += 6 * sizeof(D3DVALUE); break;
939  case D3DFVF_XYZB4: size += 7 * sizeof(D3DVALUE); break;
940  case D3DFVF_XYZB5: size += 8 * sizeof(D3DVALUE); break;
941  default: ERR("Unexpected position mask\n");
942  }
943  for (i = 0; i < GET_TEXCOUNT_FROM_FVF(d3dvtVertexType); i++)
944  {
945  size += GET_TEXCOORD_SIZE_FROM_FVF(d3dvtVertexType, i) * sizeof(D3DVALUE);
946  }
947 
948  return size;
949 }
#define D3DFVF_XYZB1
Definition: d3d8types.h:115
#define D3DFVF_XYZRHW
Definition: d3d8types.h:114
#define D3DFVF_NORMAL
Definition: d3d8types.h:120
#define DWORD
Definition: nt_native.h:44
#define GET_TEXCOORD_SIZE_FROM_FVF(d3dvtVertexType, tex_num)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define D3DFVF_POSITION_MASK
Definition: d3d8types.h:112
#define D3DFVF_SPECULAR
Definition: d3d8types.h:123
float D3DVALUE
Definition: d3dtypes.h:89
#define D3DFVF_XYZB2
Definition: d3d8types.h:116
GLsizeiptr size
Definition: glext.h:5919
#define D3DFVF_XYZB5
Definition: d3d8types.h:119
#define D3DFVF_XYZ
Definition: d3d8types.h:113
unsigned long DWORD
Definition: ntddk_ex.h:95
#define D3DFVF_XYZB3
Definition: d3d8types.h:117
#define GET_TEXCOUNT_FROM_FVF(d3dvtVertexType)
#define D3DFVF_XYZB4
Definition: d3d8types.h:118
#define ERR(fmt,...)
Definition: debug.h:109
#define D3DFVF_DIFFUSE
Definition: d3d8types.h:122
#define D3DFVF_RESERVED1
Definition: d3dtypes.h:1309

◆ hr_ddraw_from_wined3d()

HRESULT hr_ddraw_from_wined3d ( HRESULT  hr)

◆ multiply_matrix()

void multiply_matrix ( D3DMATRIX dest,
const D3DMATRIX src1,
const D3DMATRIX src2 
)

Definition at line 1173 of file utils.c.

1176 {
1177  D3DMATRIX temp;
1178 
1179  /* Now do the multiplication 'by hand'.
1180  I know that all this could be optimised, but this will be done later :-) */
1181  temp._11 = (src1->_11 * src2->_11) + (src1->_21 * src2->_12) + (src1->_31 * src2->_13) + (src1->_41 * src2->_14);
1182  temp._21 = (src1->_11 * src2->_21) + (src1->_21 * src2->_22) + (src1->_31 * src2->_23) + (src1->_41 * src2->_24);
1183  temp._31 = (src1->_11 * src2->_31) + (src1->_21 * src2->_32) + (src1->_31 * src2->_33) + (src1->_41 * src2->_34);
1184  temp._41 = (src1->_11 * src2->_41) + (src1->_21 * src2->_42) + (src1->_31 * src2->_43) + (src1->_41 * src2->_44);
1185 
1186  temp._12 = (src1->_12 * src2->_11) + (src1->_22 * src2->_12) + (src1->_32 * src2->_13) + (src1->_42 * src2->_14);
1187  temp._22 = (src1->_12 * src2->_21) + (src1->_22 * src2->_22) + (src1->_32 * src2->_23) + (src1->_42 * src2->_24);
1188  temp._32 = (src1->_12 * src2->_31) + (src1->_22 * src2->_32) + (src1->_32 * src2->_33) + (src1->_42 * src2->_34);
1189  temp._42 = (src1->_12 * src2->_41) + (src1->_22 * src2->_42) + (src1->_32 * src2->_43) + (src1->_42 * src2->_44);
1190 
1191  temp._13 = (src1->_13 * src2->_11) + (src1->_23 * src2->_12) + (src1->_33 * src2->_13) + (src1->_43 * src2->_14);
1192  temp._23 = (src1->_13 * src2->_21) + (src1->_23 * src2->_22) + (src1->_33 * src2->_23) + (src1->_43 * src2->_24);
1193  temp._33 = (src1->_13 * src2->_31) + (src1->_23 * src2->_32) + (src1->_33 * src2->_33) + (src1->_43 * src2->_34);
1194  temp._43 = (src1->_13 * src2->_41) + (src1->_23 * src2->_42) + (src1->_33 * src2->_43) + (src1->_43 * src2->_44);
1195 
1196  temp._14 = (src1->_14 * src2->_11) + (src1->_24 * src2->_12) + (src1->_34 * src2->_13) + (src1->_44 * src2->_14);
1197  temp._24 = (src1->_14 * src2->_21) + (src1->_24 * src2->_22) + (src1->_34 * src2->_23) + (src1->_44 * src2->_24);
1198  temp._34 = (src1->_14 * src2->_31) + (src1->_24 * src2->_32) + (src1->_34 * src2->_33) + (src1->_44 * src2->_34);
1199  temp._44 = (src1->_14 * src2->_41) + (src1->_24 * src2->_42) + (src1->_34 * src2->_43) + (src1->_44 * src2->_44);
1200 
1201  /* And copy the new matrix in the good storage.. */
1202  memcpy(dest, &temp, 16 * sizeof(D3DVALUE));
1203 }
float _11
Definition: d3d8types.h:1111
float _43
Definition: d3d8types.h:1114
float _22
Definition: d3d8types.h:1112
float _34
Definition: d3d8types.h:1113
float _13
Definition: d3d8types.h:1111
float _44
Definition: d3d8types.h:1114
float _42
Definition: d3d8types.h:1114
float _41
Definition: d3d8types.h:1114
float D3DVALUE
Definition: d3dtypes.h:89
float _21
Definition: d3d8types.h:1112
float _31
Definition: d3d8types.h:1113
float _24
Definition: d3d8types.h:1112
float _23
Definition: d3d8types.h:1112
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
float _33
Definition: d3d8types.h:1113
static calc_node_t temp
Definition: rpn_ieee.c:38
float _32
Definition: d3d8types.h:1113
static char * dest
Definition: rtl.c:135
float _14
Definition: d3d8types.h:1111
float _12
Definition: d3d8types.h:1111

Referenced by d3d_device3_MultiplyTransform(), d3d_device3_SetTransform(), d3d_viewport_TransformVertices(), get_modelview_matrix(), get_projection_matrix(), get_texture_matrix(), prepare_clip_space_planes(), process_vertices_strided(), update_clip_space(), and wined3d_device_multiply_transform().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( ddraw  )

◆ wined3d_colour_from_ddraw_colour()

BOOL wined3d_colour_from_ddraw_colour ( const DDPIXELFORMAT pf,
const struct ddraw_palette palette,
DWORD  colour,
struct wined3d_color wined3d_colour 
)

Definition at line 596 of file utils.c.

598 {
599  if (pf->dwFlags & DDPF_ALPHA)
600  {
601  DWORD size, mask;
602 
603  size = pf->u1.dwAlphaBitDepth;
604  mask = size < 32 ? (1u << size) - 1 : ~0u;
605  wined3d_colour->r = 0.0f;
606  wined3d_colour->g = 0.0f;
607  wined3d_colour->b = 0.0f;
608  wined3d_colour->a = colour_to_float(colour, mask);
609  return TRUE;
610  }
611 
612  if (pf->dwFlags & DDPF_FOURCC)
613  {
614  WARN("FourCC formats not supported.\n");
615  goto fail;
616  }
617 
618  if (pf->dwFlags & DDPF_PALETTEINDEXED8)
619  {
621 
622  colour &= 0xff;
623  if (!palette || FAILED(wined3d_palette_get_entries(palette->wined3d_palette, 0, colour, 1, &entry)))
624  {
625  wined3d_colour->r = 0.0f;
626  wined3d_colour->g = 0.0f;
627  wined3d_colour->b = 0.0f;
628  }
629  else
630  {
631  wined3d_colour->r = entry.peRed / 255.0f;
632  wined3d_colour->g = entry.peGreen / 255.0f;
633  wined3d_colour->b = entry.peBlue / 255.0f;
634  }
635  wined3d_colour->a = colour / 255.0f;
636  return TRUE;
637  }
638 
639  if (pf->dwFlags & DDPF_RGB)
640  {
641  wined3d_colour->r = colour_to_float(colour, pf->u2.dwRBitMask);
642  wined3d_colour->g = colour_to_float(colour, pf->u3.dwGBitMask);
643  wined3d_colour->b = colour_to_float(colour, pf->u4.dwBBitMask);
644  if (pf->dwFlags & DDPF_ALPHAPIXELS)
645  wined3d_colour->a = colour_to_float(colour, pf->u5.dwRGBAlphaBitMask);
646  else
647  wined3d_colour->a = 0.0f;
648  return TRUE;
649  }
650 
651  if (pf->dwFlags & DDPF_ZBUFFER)
652  {
653  wined3d_colour->r = colour_to_float(colour, pf->u3.dwZBitMask);
654  if (pf->dwFlags & DDPF_STENCILBUFFER)
655  wined3d_colour->g = colour_to_float(colour, pf->u4.dwStencilBitMask);
656  else
657  wined3d_colour->g = 0.0f;
658  wined3d_colour->b = 0.0f;
659  wined3d_colour->a = 0.0f;
660  return TRUE;
661  }
662 
663  FIXME("Unhandled pixel format.\n");
665 
666 fail:
667  wined3d_colour->r = 0.0f;
668  wined3d_colour->g = 0.0f;
669  wined3d_colour->b = 0.0f;
670  wined3d_colour->a = 0.0f;
671 
672  return FALSE;
673 }
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
#define TRUE
Definition: types.h:120
DWORD dwFlags
Definition: ddraw.h:1071
HRESULT CDECL wined3d_palette_get_entries(const struct wined3d_palette *palette, DWORD flags, DWORD start, DWORD count, PALETTEENTRY *entries)
Definition: palette.c:53
DWORD dwStencilBitMask
Definition: ddraw.h:1108
#define WARN(fmt,...)
Definition: debug.h:111
static float colour_to_float(DWORD colour, DWORD mask)
Definition: utils.c:589
GLenum GLint GLuint mask
Definition: glext.h:6028
#define DDPF_ALPHA
Definition: ddraw.h:502
#define FIXME(fmt,...)
Definition: debug.h:110
DWORD dwGBitMask
Definition: ddraw.h:1094
#define DDPF_FOURCC
Definition: ddraw.h:503
GLsizeiptr size
Definition: glext.h:5919
#define DDPF_RGB
Definition: ddraw.h:507
#define DDPF_STENCILBUFFER
Definition: ddraw.h:515
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD dwRBitMask
Definition: ddraw.h:1085
#define DDPF_PALETTEINDEXED8
Definition: ddraw.h:506
DWORD dwZBitMask
Definition: ddraw.h:1096
#define DDPF_ALPHAPIXELS
Definition: ddraw.h:501
uint32_t entry
Definition: isohybrid.c:63
static HPALETTE palette
Definition: clipboard.c:1345
static void DDRAW_dump_pixelformat(const DDPIXELFORMAT *pf)
Definition: utils.c:827
DWORD dwAlphaBitDepth
Definition: ddraw.h:1078
DWORD dwBBitMask
Definition: ddraw.h:1106
#define DDPF_ZBUFFER
Definition: ddraw.h:511
DWORD dwRGBAlphaBitMask
Definition: ddraw.h:1113

Referenced by ddraw_surface_blt().

◆ wined3dformat_from_ddrawformat()

enum wined3d_format_id wined3dformat_from_ddrawformat ( const DDPIXELFORMAT DDPixelFormat)

Definition at line 333 of file utils.c.

334 {
335  TRACE("Convert a DirectDraw Pixelformat to a WineD3D Pixelformat\n");
336  if(TRACE_ON(ddraw))
337  {
338  DDRAW_dump_pixelformat(DDPixelFormat);
339  }
340 
341  if(DDPixelFormat->dwFlags & DDPF_PALETTEINDEXED8)
342  {
343  return WINED3DFMT_P8_UINT;
344  }
346  {
347  FIXME("DDPF_PALETTEINDEXED1 to DDPF_PALETTEINDEXED4 are not supported by WineD3D (yet). Returning WINED3DFMT_P8\n");
348  return WINED3DFMT_P8_UINT;
349  }
350  else if(DDPixelFormat->dwFlags & DDPF_RGB)
351  {
352  switch(DDPixelFormat->u1.dwRGBBitCount)
353  {
354  case 8:
355  /* This is the only format that can match here */
357 
358  case 16:
359  /* Read the Color masks */
360  if( (DDPixelFormat->u2.dwRBitMask == 0xF800) &&
361  (DDPixelFormat->u3.dwGBitMask == 0x07E0) &&
362  (DDPixelFormat->u4.dwBBitMask == 0x001F) )
363  {
365  }
366 
367  if( (DDPixelFormat->u2.dwRBitMask == 0x7C00) &&
368  (DDPixelFormat->u3.dwGBitMask == 0x03E0) &&
369  (DDPixelFormat->u4.dwBBitMask == 0x001F) )
370  {
371  if( (DDPixelFormat->dwFlags & DDPF_ALPHAPIXELS) &&
372  (DDPixelFormat->u5.dwRGBAlphaBitMask == 0x8000))
374  else
376  }
377 
378  if( (DDPixelFormat->u2.dwRBitMask == 0x0F00) &&
379  (DDPixelFormat->u3.dwGBitMask == 0x00F0) &&
380  (DDPixelFormat->u4.dwBBitMask == 0x000F) )
381  {
382  if( (DDPixelFormat->dwFlags & DDPF_ALPHAPIXELS) &&
383  (DDPixelFormat->u5.dwRGBAlphaBitMask == 0xF000))
385  else
387  }
388 
389  if( (DDPixelFormat->dwFlags & DDPF_ALPHAPIXELS) &&
390  (DDPixelFormat->u5.dwRGBAlphaBitMask == 0xFF00) &&
391  (DDPixelFormat->u2.dwRBitMask == 0x00E0) &&
392  (DDPixelFormat->u3.dwGBitMask == 0x001C) &&
393  (DDPixelFormat->u4.dwBBitMask == 0x0003) )
394  {
396  }
397  WARN("16 bit RGB Pixel format does not match.\n");
398  return WINED3DFMT_UNKNOWN;
399 
400  case 24:
402 
403  case 32:
404  /* Read the Color masks */
405  if( (DDPixelFormat->u2.dwRBitMask == 0x00FF0000) &&
406  (DDPixelFormat->u3.dwGBitMask == 0x0000FF00) &&
407  (DDPixelFormat->u4.dwBBitMask == 0x000000FF) )
408  {
409  if( (DDPixelFormat->dwFlags & DDPF_ALPHAPIXELS) &&
410  (DDPixelFormat->u5.dwRGBAlphaBitMask == 0xFF000000))
412  else
414 
415  }
416  WARN("32 bit RGB pixel format does not match.\n");
417  return WINED3DFMT_UNKNOWN;
418 
419  default:
420  WARN("Invalid dwRGBBitCount in Pixelformat structure.\n");
421  return WINED3DFMT_UNKNOWN;
422  }
423  }
424  else if( (DDPixelFormat->dwFlags & DDPF_ALPHA) )
425  {
426  /* Alpha only Pixelformat */
427  switch(DDPixelFormat->u1.dwAlphaBitDepth)
428  {
429  case 8:
430  return WINED3DFMT_A8_UNORM;
431 
432  default:
433  WARN("Invalid AlphaBitDepth in Alpha-Only Pixelformat.\n");
434  return WINED3DFMT_UNKNOWN;
435  }
436  }
437  else if(DDPixelFormat->dwFlags & DDPF_LUMINANCE)
438  {
439  /* Luminance-only or luminance-alpha */
440  if(DDPixelFormat->dwFlags & DDPF_ALPHAPIXELS)
441  {
442  /* Luminance with Alpha */
443  switch(DDPixelFormat->u1.dwLuminanceBitCount)
444  {
445  case 4:
446  if(DDPixelFormat->u1.dwAlphaBitDepth == 4)
447  return WINED3DFMT_L4A4_UNORM;
448  WARN("Unknown Alpha / Luminance bit depth combination.\n");
449  return WINED3DFMT_UNKNOWN;
450 
451  case 6:
452  FIXME("A luminance Pixelformat shouldn't have 6 luminance bits. Returning D3DFMT_L6V5U5 for now.\n");
454 
455  case 8:
456  if(DDPixelFormat->u1.dwAlphaBitDepth == 8)
457  return WINED3DFMT_L8A8_UNORM;
458  WARN("Unknown Alpha / Lumincase bit depth combination.\n");
459  return WINED3DFMT_UNKNOWN;
460  }
461  }
462  else
463  {
464  /* Luminance-only */
465  switch(DDPixelFormat->u1.dwLuminanceBitCount)
466  {
467  case 6:
468  FIXME("A luminance Pixelformat shouldn't have 6 luminance bits. Returning D3DFMT_L6V5U5 for now.\n");
470 
471  case 8:
472  return WINED3DFMT_L8_UNORM;
473 
474  default:
475  WARN("Unknown luminance-only bit depth 0x%x.\n", DDPixelFormat->u1.dwLuminanceBitCount);
476  return WINED3DFMT_UNKNOWN;
477  }
478  }
479  }
480  else if(DDPixelFormat->dwFlags & DDPF_ZBUFFER)
481  {
482  /* Z buffer */
483  if(DDPixelFormat->dwFlags & DDPF_STENCILBUFFER)
484  {
485  switch(DDPixelFormat->u1.dwZBufferBitDepth)
486  {
487  case 16:
488  if (DDPixelFormat->u2.dwStencilBitDepth == 1) return WINED3DFMT_S1_UINT_D15_UNORM;
489  WARN("Unknown depth stencil format: 16 z bits, %u stencil bits.\n",
490  DDPixelFormat->u2.dwStencilBitDepth);
491  return WINED3DFMT_UNKNOWN;
492 
493  case 32:
494  if (DDPixelFormat->u2.dwStencilBitDepth == 8) return WINED3DFMT_D24_UNORM_S8_UINT;
495  else if (DDPixelFormat->u2.dwStencilBitDepth == 4) return WINED3DFMT_S4X4_UINT_D24_UNORM;
496  WARN("Unknown depth stencil format: 32 z bits, %u stencil bits.\n",
497  DDPixelFormat->u2.dwStencilBitDepth);
498  return WINED3DFMT_UNKNOWN;
499 
500  default:
501  WARN("Unknown depth stencil format: %u z bits, %u stencil bits.\n",
502  DDPixelFormat->u1.dwZBufferBitDepth, DDPixelFormat->u2.dwStencilBitDepth);
503  return WINED3DFMT_UNKNOWN;
504  }
505  }
506  else
507  {
508  switch(DDPixelFormat->u1.dwZBufferBitDepth)
509  {
510  case 16:
511  return WINED3DFMT_D16_UNORM;
512 
513  case 24:
514  return WINED3DFMT_X8D24_UNORM;
515 
516  case 32:
517  if (DDPixelFormat->u3.dwZBitMask == 0x00FFFFFF) return WINED3DFMT_X8D24_UNORM;
518  else if (DDPixelFormat->u3.dwZBitMask == 0xFFFFFF00) return WINED3DFMT_X8D24_UNORM;
519  else if (DDPixelFormat->u3.dwZBitMask == 0xFFFFFFFF) return WINED3DFMT_D32_UNORM;
520  WARN("Unknown depth-only format: 32 z bits, mask 0x%08x\n",
521  DDPixelFormat->u3.dwZBitMask);
522  return WINED3DFMT_UNKNOWN;
523 
524  default:
525  WARN("Unknown depth-only format: %u z bits, mask 0x%08x\n",
526  DDPixelFormat->u1.dwZBufferBitDepth, DDPixelFormat->u3.dwZBitMask);
527  return WINED3DFMT_UNKNOWN;
528  }
529  }
530  }
531  else if(DDPixelFormat->dwFlags & DDPF_FOURCC)
532  {
533  return DDPixelFormat->dwFourCC;
534  }
535  else if(DDPixelFormat->dwFlags & DDPF_BUMPDUDV)
536  {
537  if( (DDPixelFormat->u1.dwBumpBitCount == 16 ) &&
538  (DDPixelFormat->u2.dwBumpDuBitMask == 0x000000ff) &&
539  (DDPixelFormat->u3.dwBumpDvBitMask == 0x0000ff00) &&
540  (DDPixelFormat->u4.dwBumpLuminanceBitMask == 0x00000000) )
541  {
542  return WINED3DFMT_R8G8_SNORM;
543  }
544  else if ( (DDPixelFormat->u1.dwBumpBitCount == 16 ) &&
545  (DDPixelFormat->u2.dwBumpDuBitMask == 0x0000001f) &&
546  (DDPixelFormat->u3.dwBumpDvBitMask == 0x000003e0) &&
547  (DDPixelFormat->u4.dwBumpLuminanceBitMask == 0x0000fc00) )
548  {
550  }
551  else if ( (DDPixelFormat->u1.dwBumpBitCount == 32 ) &&
552  (DDPixelFormat->u2.dwBumpDuBitMask == 0x000000ff) &&
553  (DDPixelFormat->u3.dwBumpDvBitMask == 0x0000ff00) &&
554  (DDPixelFormat->u4.dwBumpLuminanceBitMask == 0x00ff0000) )
555  {
557  }
558  }
559 
560  WARN("Unknown Pixelformat.\n");
561  return WINED3DFMT_UNKNOWN;
562 }
#define DDPF_BUMPDUDV
Definition: ddraw.h:519
DWORD dwFlags
Definition: ddraw.h:1071
#define DDPF_LUMINANCE
Definition: ddraw.h:517
DWORD dwBumpDuBitMask
Definition: ddraw.h:1089
#define WARN(fmt,...)
Definition: debug.h:111
#define DDPF_ALPHA
Definition: ddraw.h:502
#define FIXME(fmt,...)
Definition: debug.h:110
DWORD dwGBitMask
Definition: ddraw.h:1094
#define DDPF_FOURCC
Definition: ddraw.h:503
#define TRACE(s)
Definition: solgame.cpp:4
#define DDPF_PALETTEINDEXED4
Definition: ddraw.h:504
DWORD dwRGBBitCount
Definition: ddraw.h:1075
#define DDPF_PALETTEINDEXED2
Definition: ddraw.h:513
#define DDPF_RGB
Definition: ddraw.h:507
#define DDPF_STENCILBUFFER
Definition: ddraw.h:515
DWORD dwLuminanceBitCount
Definition: ddraw.h:1079
DWORD dwRBitMask
Definition: ddraw.h:1085
#define DDPF_PALETTEINDEXED8
Definition: ddraw.h:506
DWORD dwZBitMask
Definition: ddraw.h:1096
#define DDPF_ALPHAPIXELS
Definition: ddraw.h:501
DWORD dwFourCC
Definition: ddraw.h:1072
static void DDRAW_dump_pixelformat(const DDPIXELFORMAT *pf)
Definition: utils.c:827
DWORD dwStencilBitDepth
Definition: ddraw.h:1087
DWORD dwAlphaBitDepth
Definition: ddraw.h:1078
DWORD dwBumpLuminanceBitMask
Definition: ddraw.h:1109
DWORD dwBBitMask
Definition: ddraw.h:1106
DWORD dwZBufferBitDepth
Definition: ddraw.h:1077
#define DDPF_PALETTEINDEXED1
Definition: ddraw.h:512
#define DDPF_ZBUFFER
Definition: ddraw.h:511
#define TRACE_ON(x)
Definition: compat.h:65
DWORD dwBumpDvBitMask
Definition: ddraw.h:1097
DWORD dwBumpBitCount
Definition: ddraw.h:1080
DWORD dwRGBAlphaBitMask
Definition: ddraw.h:1113

Referenced by ddraw_surface7_SetSurfaceDesc(), and ddraw_surface_create().

◆ wined3dmapflags_from_ddrawmapflags()

unsigned int wined3dmapflags_from_ddrawmapflags ( unsigned int  flags)

Definition at line 564 of file utils.c.

565 {
566  static const unsigned int handled = DDLOCK_NOSYSLOCK
570  unsigned int wined3d_flags;
571 
572  wined3d_flags = flags & handled;
574  wined3d_flags |= WINED3D_MAP_READ;
575  if (!(flags & DDLOCK_READONLY))
576  wined3d_flags |= WINED3D_MAP_WRITE;
577  if (!(wined3d_flags & (WINED3D_MAP_READ | WINED3D_MAP_WRITE)))
578  wined3d_flags |= WINED3D_MAP_READ | WINED3D_MAP_WRITE;
580  wined3d_flags |= WINED3D_MAP_NO_DIRTY_UPDATE;
582 
583  if (flags)
584  FIXME("Unhandled flags %#x.\n", flags);
585 
586  return wined3d_flags;
587 }
#define DDLOCK_READONLY
Definition: ddraw.h:624
#define FIXME(fmt,...)
Definition: debug.h:110
#define WINED3D_MAP_READ
Definition: wined3d.h:939
#define DDLOCK_DONOTWAIT
Definition: ddraw.h:630
GLbitfield flags
Definition: glext.h:7161
#define WINED3D_MAP_NO_DIRTY_UPDATE
Definition: wined3d.h:937
#define WINED3D_MAP_WRITE
Definition: wined3d.h:938
#define DDLOCK_NOSYSLOCK
Definition: ddraw.h:626
#define DDLOCK_WAIT
Definition: ddraw.h:622
#define DDLOCK_NOOVERWRITE
Definition: ddraw.h:627
#define DDLOCK_NODIRTYUPDATE
Definition: ddraw.h:632
#define DDLOCK_DISCARDCONTENTS
Definition: ddraw.h:628

Referenced by d3d_vertex_buffer7_Lock(), and surface_lock().