Skip to content

Commit

Permalink
Move D3DFormat definition into separate namespace to make it compatib…
Browse files Browse the repository at this point in the history
…le to existing definitions
  • Loading branch information
Laupetin committed Jan 6, 2024
1 parent c415027 commit cd53c3c
Show file tree
Hide file tree
Showing 9 changed files with 138 additions and 133 deletions.
210 changes: 107 additions & 103 deletions src/Common/Image/D3DFormat.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,107 +2,111 @@

#include "Utils/FileUtils.h"

enum D3DFORMAT
// This is a redefinition to make this enum available on platforms without DirectX headers
namespace oat
{
D3DFMT_UNKNOWN = 0,

D3DFMT_R8G8B8 = 20,
D3DFMT_A8R8G8B8 = 21,
D3DFMT_X8R8G8B8 = 22,
D3DFMT_R5G6B5 = 23,
D3DFMT_X1R5G5B5 = 24,
D3DFMT_A1R5G5B5 = 25,
D3DFMT_A4R4G4B4 = 26,
D3DFMT_R3G3B2 = 27,
D3DFMT_A8 = 28,
D3DFMT_A8R3G3B2 = 29,
D3DFMT_X4R4G4B4 = 30,
D3DFMT_A2B10G10R10 = 31,
D3DFMT_A8B8G8R8 = 32,
D3DFMT_X8B8G8R8 = 33,
D3DFMT_G16R16 = 34,
D3DFMT_A2R10G10B10 = 35,
D3DFMT_A16B16G16R16 = 36,

D3DFMT_A8P8 = 40,
D3DFMT_P8 = 41,

D3DFMT_L8 = 50,
D3DFMT_A8L8 = 51,
D3DFMT_A4L4 = 52,

D3DFMT_V8U8 = 60,
D3DFMT_L6V5U5 = 61,
D3DFMT_X8L8V8U8 = 62,
D3DFMT_Q8W8V8U8 = 63,
D3DFMT_V16U16 = 64,
D3DFMT_A2W10V10U10 = 67,

D3DFMT_UYVY = FileUtils::MakeMagic32('U', 'Y', 'V', 'Y'),
D3DFMT_R8G8_B8G8 = FileUtils::MakeMagic32('R', 'G', 'B', 'G'),
D3DFMT_YUY2 = FileUtils::MakeMagic32('Y', 'U', 'Y', '2'),
D3DFMT_G8R8_G8B8 = FileUtils::MakeMagic32('G', 'R', 'G', 'B'),
D3DFMT_DXT1 = FileUtils::MakeMagic32('D', 'X', 'T', '1'),
D3DFMT_DXT2 = FileUtils::MakeMagic32('D', 'X', 'T', '2'),
D3DFMT_DXT3 = FileUtils::MakeMagic32('D', 'X', 'T', '3'),
D3DFMT_DXT4 = FileUtils::MakeMagic32('D', 'X', 'T', '4'),
D3DFMT_DXT5 = FileUtils::MakeMagic32('D', 'X', 'T', '5'),

D3DFMT_D16_LOCKABLE = 70,
D3DFMT_D32 = 71,
D3DFMT_D15S1 = 73,
D3DFMT_D24S8 = 75,
D3DFMT_D24X8 = 77,
D3DFMT_D24X4S4 = 79,
D3DFMT_D16 = 80,

D3DFMT_D32F_LOCKABLE = 82,
D3DFMT_D24FS8 = 83,

/* D3D9Ex only -- */

/* Z-Stencil formats valid for CPU access */
D3DFMT_D32_LOCKABLE = 84,
D3DFMT_S8_LOCKABLE = 85,

/* -- D3D9Ex only */

D3DFMT_L16 = 81,

D3DFMT_VERTEXDATA = 100,
D3DFMT_INDEX16 = 101,
D3DFMT_INDEX32 = 102,

D3DFMT_Q16W16V16U16 = 110,

D3DFMT_MULTI2_ARGB8 = FileUtils::MakeMagic32('M', 'E', 'T', '1'),

// Floating point surface formats

// s10e5 formats (16-bits per channel)
D3DFMT_R16F = 111,
D3DFMT_G16R16F = 112,
D3DFMT_A16B16G16R16F = 113,

// IEEE s23e8 formats (32-bits per channel)
D3DFMT_R32F = 114,
D3DFMT_G32R32F = 115,
D3DFMT_A32B32G32R32F = 116,

D3DFMT_CxV8U8 = 117,

/* D3D9Ex only -- */

// Monochrome 1 bit per pixel format
D3DFMT_A1 = 118,

// 2.8 biased fixed point
D3DFMT_A2B10G10R10_XR_BIAS = 119,

// Binary format indicating that the data has no inherent type
D3DFMT_BINARYBUFFER = 199,

/* -- D3D9Ex only */

D3DFMT_FORCE_DWORD = 0x7fffffff
};
enum D3DFORMAT
{
D3DFMT_UNKNOWN = 0,

D3DFMT_R8G8B8 = 20,
D3DFMT_A8R8G8B8 = 21,
D3DFMT_X8R8G8B8 = 22,
D3DFMT_R5G6B5 = 23,
D3DFMT_X1R5G5B5 = 24,
D3DFMT_A1R5G5B5 = 25,
D3DFMT_A4R4G4B4 = 26,
D3DFMT_R3G3B2 = 27,
D3DFMT_A8 = 28,
D3DFMT_A8R3G3B2 = 29,
D3DFMT_X4R4G4B4 = 30,
D3DFMT_A2B10G10R10 = 31,
D3DFMT_A8B8G8R8 = 32,
D3DFMT_X8B8G8R8 = 33,
D3DFMT_G16R16 = 34,
D3DFMT_A2R10G10B10 = 35,
D3DFMT_A16B16G16R16 = 36,

D3DFMT_A8P8 = 40,
D3DFMT_P8 = 41,

D3DFMT_L8 = 50,
D3DFMT_A8L8 = 51,
D3DFMT_A4L4 = 52,

D3DFMT_V8U8 = 60,
D3DFMT_L6V5U5 = 61,
D3DFMT_X8L8V8U8 = 62,
D3DFMT_Q8W8V8U8 = 63,
D3DFMT_V16U16 = 64,
D3DFMT_A2W10V10U10 = 67,

D3DFMT_UYVY = FileUtils::MakeMagic32('U', 'Y', 'V', 'Y'),
D3DFMT_R8G8_B8G8 = FileUtils::MakeMagic32('R', 'G', 'B', 'G'),
D3DFMT_YUY2 = FileUtils::MakeMagic32('Y', 'U', 'Y', '2'),
D3DFMT_G8R8_G8B8 = FileUtils::MakeMagic32('G', 'R', 'G', 'B'),
D3DFMT_DXT1 = FileUtils::MakeMagic32('D', 'X', 'T', '1'),
D3DFMT_DXT2 = FileUtils::MakeMagic32('D', 'X', 'T', '2'),
D3DFMT_DXT3 = FileUtils::MakeMagic32('D', 'X', 'T', '3'),
D3DFMT_DXT4 = FileUtils::MakeMagic32('D', 'X', 'T', '4'),
D3DFMT_DXT5 = FileUtils::MakeMagic32('D', 'X', 'T', '5'),

D3DFMT_D16_LOCKABLE = 70,
D3DFMT_D32 = 71,
D3DFMT_D15S1 = 73,
D3DFMT_D24S8 = 75,
D3DFMT_D24X8 = 77,
D3DFMT_D24X4S4 = 79,
D3DFMT_D16 = 80,

D3DFMT_D32F_LOCKABLE = 82,
D3DFMT_D24FS8 = 83,

/* D3D9Ex only -- */

/* Z-Stencil formats valid for CPU access */
D3DFMT_D32_LOCKABLE = 84,
D3DFMT_S8_LOCKABLE = 85,

/* -- D3D9Ex only */

D3DFMT_L16 = 81,

D3DFMT_VERTEXDATA = 100,
D3DFMT_INDEX16 = 101,
D3DFMT_INDEX32 = 102,

D3DFMT_Q16W16V16U16 = 110,

D3DFMT_MULTI2_ARGB8 = FileUtils::MakeMagic32('M', 'E', 'T', '1'),

// Floating point surface formats

// s10e5 formats (16-bits per channel)
D3DFMT_R16F = 111,
D3DFMT_G16R16F = 112,
D3DFMT_A16B16G16R16F = 113,

// IEEE s23e8 formats (32-bits per channel)
D3DFMT_R32F = 114,
D3DFMT_G32R32F = 115,
D3DFMT_A32B32G32R32F = 116,

D3DFMT_CxV8U8 = 117,

/* D3D9Ex only -- */

// Monochrome 1 bit per pixel format
D3DFMT_A1 = 118,

// 2.8 biased fixed point
D3DFMT_A2B10G10R10_XR_BIAS = 119,

// Binary format indicating that the data has no inherent type
D3DFMT_BINARYBUFFER = 199,

/* -- D3D9Ex only */

D3DFMT_FORCE_DWORD = 0x7fffffff
};
} // namespace oat
35 changes: 18 additions & 17 deletions src/Common/Image/ImageFormat.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#include "ImageFormat.h"

ImageFormat::ImageFormat(const ImageFormatId id, const D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat)
ImageFormat::ImageFormat(const ImageFormatId id, const oat::D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat)
: m_id(id),
m_d3d_format(d3dFormat),
m_dxgi_format(dxgiFormat)
Expand All @@ -12,7 +12,7 @@ ImageFormatId ImageFormat::GetId() const
return m_id;
}

D3DFORMAT ImageFormat::GetD3DFormat() const
oat::D3DFORMAT ImageFormat::GetD3DFormat() const
{
return m_d3d_format;
}
Expand All @@ -23,7 +23,7 @@ DXGI_FORMAT ImageFormat::GetDxgiFormat() const
}

ImageFormatUnsigned::ImageFormatUnsigned(const ImageFormatId id,
const D3DFORMAT d3dFormat,
const oat::D3DFORMAT d3dFormat,
const DXGI_FORMAT dxgiFormat,
const unsigned bitsPerPixel,
const unsigned rOffset,
Expand Down Expand Up @@ -78,7 +78,7 @@ size_t ImageFormatUnsigned::GetSizeOfMipLevel(const unsigned mipLevel, const uns
}

ImageFormatBlockCompressed::ImageFormatBlockCompressed(
const ImageFormatId id, const D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat, const unsigned blockSize, const unsigned bitsPerBlock)
const ImageFormatId id, const oat::D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat, const unsigned blockSize, const unsigned bitsPerBlock)
: ImageFormat(id, d3dFormat, dxgiFormat),
m_block_size(blockSize),
m_bits_per_block(bitsPerBlock)
Expand Down Expand Up @@ -140,22 +140,23 @@ bool ImageFormatUnsigned::HasA() const
return m_a_size > 0;
}

const ImageFormatUnsigned ImageFormat::FORMAT_R8_G8_B8(ImageFormatId::R8_G8_B8, D3DFMT_R8G8B8, DXGI_FORMAT_UNKNOWN, 24, 0, 8, 8, 8, 16, 8, 0, 0);
const ImageFormatUnsigned ImageFormat::FORMAT_B8_G8_R8_X8(ImageFormatId::B8_G8_R8_X8, D3DFMT_X8R8G8B8, DXGI_FORMAT_B8G8R8X8_UNORM, 32, 16, 8, 8, 8, 0, 8, 0, 0);
const ImageFormatUnsigned ImageFormat::FORMAT_R8_G8_B8(ImageFormatId::R8_G8_B8, oat::D3DFMT_R8G8B8, DXGI_FORMAT_UNKNOWN, 24, 0, 8, 8, 8, 16, 8, 0, 0);
const ImageFormatUnsigned
ImageFormat::FORMAT_R8_G8_B8_A8(ImageFormatId::R8_G8_B8_A8, D3DFMT_A8B8G8R8, DXGI_FORMAT_R8G8B8A8_UNORM, 32, 0, 8, 8, 8, 16, 8, 24, 8);
ImageFormat::FORMAT_B8_G8_R8_X8(ImageFormatId::B8_G8_R8_X8, oat::D3DFMT_X8R8G8B8, DXGI_FORMAT_B8G8R8X8_UNORM, 32, 16, 8, 8, 8, 0, 8, 0, 0);
const ImageFormatUnsigned
ImageFormat::FORMAT_B8_G8_R8_A8(ImageFormatId::B8_G8_R8_A8, D3DFMT_A8R8G8B8, DXGI_FORMAT_B8G8R8A8_UNORM, 32, 16, 8, 8, 8, 0, 8, 24, 8);
const ImageFormatUnsigned ImageFormat::FORMAT_A8(ImageFormatId::A8, D3DFMT_A8, DXGI_FORMAT_A8_UNORM, 8, 0, 0, 0, 0, 0, 0, 0, 8);
ImageFormat::FORMAT_R8_G8_B8_A8(ImageFormatId::R8_G8_B8_A8, oat::D3DFMT_A8B8G8R8, DXGI_FORMAT_R8G8B8A8_UNORM, 32, 0, 8, 8, 8, 16, 8, 24, 8);
const ImageFormatUnsigned
ImageFormat::FORMAT_B8_G8_R8_A8(ImageFormatId::B8_G8_R8_A8, oat::D3DFMT_A8R8G8B8, DXGI_FORMAT_B8G8R8A8_UNORM, 32, 16, 8, 8, 8, 0, 8, 24, 8);
const ImageFormatUnsigned ImageFormat::FORMAT_A8(ImageFormatId::A8, oat::D3DFMT_A8, DXGI_FORMAT_A8_UNORM, 8, 0, 0, 0, 0, 0, 0, 0, 8);
const ImageFormatUnsigned ImageFormat::FORMAT_R16_G16_B16_A16_FLOAT(
ImageFormatId::R16_G16_B16_A16_FLOAT, D3DFMT_A16B16G16R16F, DXGI_FORMAT_R16G16B16A16_FLOAT, 128, 0, 0, 0, 0, 0, 0, 0, 8);
const ImageFormatUnsigned ImageFormat::FORMAT_R8(ImageFormatId::R8, D3DFMT_L8, DXGI_FORMAT_R8_UNORM, 8, 0, 8, 0, 0, 0, 0, 0, 0);
const ImageFormatUnsigned ImageFormat::FORMAT_R8_A8(ImageFormatId::R8_A8, D3DFMT_A8L8, DXGI_FORMAT_UNKNOWN, 16, 0, 8, 0, 0, 0, 0, 8, 8);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC1(ImageFormatId::BC1, D3DFMT_DXT1, DXGI_FORMAT_BC1_UNORM, 4, 64);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC2(ImageFormatId::BC2, D3DFMT_DXT3, DXGI_FORMAT_BC2_UNORM, 4, 128);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC3(ImageFormatId::BC3, D3DFMT_DXT5, DXGI_FORMAT_BC3_UNORM, 4, 128);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC4(ImageFormatId::BC4, D3DFMT_UNKNOWN, DXGI_FORMAT_BC4_UNORM, 4, 64);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC5(ImageFormatId::BC5, D3DFMT_UNKNOWN, DXGI_FORMAT_BC5_UNORM, 4, 128);
ImageFormatId::R16_G16_B16_A16_FLOAT, oat::D3DFMT_A16B16G16R16F, DXGI_FORMAT_R16G16B16A16_FLOAT, 128, 0, 0, 0, 0, 0, 0, 0, 8);
const ImageFormatUnsigned ImageFormat::FORMAT_R8(ImageFormatId::R8, oat::D3DFMT_L8, DXGI_FORMAT_R8_UNORM, 8, 0, 8, 0, 0, 0, 0, 0, 0);
const ImageFormatUnsigned ImageFormat::FORMAT_R8_A8(ImageFormatId::R8_A8, oat::D3DFMT_A8L8, DXGI_FORMAT_UNKNOWN, 16, 0, 8, 0, 0, 0, 0, 8, 8);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC1(ImageFormatId::BC1, oat::D3DFMT_DXT1, DXGI_FORMAT_BC1_UNORM, 4, 64);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC2(ImageFormatId::BC2, oat::D3DFMT_DXT3, DXGI_FORMAT_BC2_UNORM, 4, 128);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC3(ImageFormatId::BC3, oat::D3DFMT_DXT5, DXGI_FORMAT_BC3_UNORM, 4, 128);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC4(ImageFormatId::BC4, oat::D3DFMT_UNKNOWN, DXGI_FORMAT_BC4_UNORM, 4, 64);
const ImageFormatBlockCompressed ImageFormat::FORMAT_BC5(ImageFormatId::BC5, oat::D3DFMT_UNKNOWN, DXGI_FORMAT_BC5_UNORM, 4, 128);

const ImageFormat* const ImageFormat::ALL_FORMATS[static_cast<unsigned>(ImageFormatId::MAX)]{
&FORMAT_R8_G8_B8,
Expand Down
10 changes: 5 additions & 5 deletions src/Common/Image/ImageFormat.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,17 @@ class ImageFormatBlockCompressed;
class ImageFormat
{
ImageFormatId m_id;
D3DFORMAT m_d3d_format;
oat::D3DFORMAT m_d3d_format;
DXGI_FORMAT m_dxgi_format;

protected:
ImageFormat(ImageFormatId id, D3DFORMAT d3dFormat, DXGI_FORMAT dxgiFormat);
ImageFormat(ImageFormatId id, oat::D3DFORMAT d3dFormat, DXGI_FORMAT dxgiFormat);

public:
virtual ~ImageFormat() = default;

ImageFormatId GetId() const;
D3DFORMAT GetD3DFormat() const;
oat::D3DFORMAT GetD3DFormat() const;
DXGI_FORMAT GetDxgiFormat() const;

virtual ImageFormatType GetType() const = 0;
Expand Down Expand Up @@ -86,7 +86,7 @@ class ImageFormatUnsigned final : public ImageFormat
unsigned m_a_size;

ImageFormatUnsigned(ImageFormatId id,
D3DFORMAT d3dFormat,
oat::D3DFORMAT d3dFormat,
DXGI_FORMAT dxgiFormat,
unsigned bitsPerPixel,
unsigned rOffset,
Expand Down Expand Up @@ -114,7 +114,7 @@ class ImageFormatBlockCompressed final : public ImageFormat
unsigned m_block_size;
unsigned m_bits_per_block;

ImageFormatBlockCompressed(ImageFormatId id, D3DFORMAT d3dFormat, DXGI_FORMAT dxgiFormat, unsigned blockSize, unsigned bitsPerBlock);
ImageFormatBlockCompressed(ImageFormatId id, oat::D3DFORMAT d3dFormat, DXGI_FORMAT dxgiFormat, unsigned blockSize, unsigned bitsPerBlock);

ImageFormatType GetType() const override;
size_t GetPitch(unsigned mipLevel, unsigned width) const override;
Expand Down
2 changes: 1 addition & 1 deletion src/ObjLoading/Game/IW3/ObjLoaderIW3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ void ObjLoader::LoadImageFromLoadDef(GfxImage* image, Zone* zone)
else
textureLoader.Type(TextureType::T_2D);

textureLoader.Format(static_cast<D3DFORMAT>(loadDef->format));
textureLoader.Format(static_cast<oat::D3DFORMAT>(loadDef->format));
textureLoader.HasMipMaps(!(loadDef->flags & iwi6::IMG_FLAG_NOMIPMAPS));
Texture* loadedTexture = textureLoader.LoadTexture(image->texture.loadDef->data);

Expand Down
2 changes: 1 addition & 1 deletion src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ void ObjLoader::LoadImageFromLoadDef(GfxImage* image, Zone* zone)
else
textureLoader.Type(TextureType::T_2D);

textureLoader.Format(static_cast<D3DFORMAT>(loadDef->format));
textureLoader.Format(static_cast<oat::D3DFORMAT>(loadDef->format));
textureLoader.HasMipMaps(!(loadDef->flags & iwi8::IMG_FLAG_NOMIPMAPS));
Texture* loadedTexture = textureLoader.LoadTexture(image->texture.loadDef->data);

Expand Down
2 changes: 1 addition & 1 deletion src/ObjLoading/Game/IW5/ObjLoaderIW5.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ void ObjLoader::LoadImageFromLoadDef(GfxImage* image, Zone* zone)
else
textureLoader.Type(TextureType::T_2D);

textureLoader.Format(static_cast<D3DFORMAT>(loadDef->format));
textureLoader.Format(static_cast<oat::D3DFORMAT>(loadDef->format));
textureLoader.HasMipMaps(!(loadDef->flags & iwi8::IMG_FLAG_NOMIPMAPS));
Texture* loadedTexture = textureLoader.LoadTexture(image->texture.loadDef->data);

Expand Down
2 changes: 1 addition & 1 deletion src/ObjLoading/Game/T5/ObjLoaderT5.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ void ObjLoader::LoadImageFromLoadDef(GfxImage* image, Zone* zone)
else
textureLoader.Type(TextureType::T_2D);

textureLoader.Format(static_cast<D3DFORMAT>(loadDef->format));
textureLoader.Format(static_cast<oat::D3DFORMAT>(loadDef->format));
textureLoader.HasMipMaps(!(loadDef->flags & iwi13::IMG_FLAG_NOMIPMAPS));
Texture* loadedTexture = textureLoader.LoadTexture(image->texture.loadDef->data);

Expand Down
4 changes: 2 additions & 2 deletions src/ObjLoading/Image/Dx9TextureLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

Dx9TextureLoader::Dx9TextureLoader(MemoryManager* memoryManager)
: m_memory_manager(memoryManager),
m_format(D3DFMT_UNKNOWN),
m_format(oat::D3DFMT_UNKNOWN),
m_type(TextureType::T_2D),
m_has_mip_maps(false),
m_width(1u),
Expand All @@ -24,7 +24,7 @@ const ImageFormat* Dx9TextureLoader::GetFormatForDx9Format() const
return nullptr;
}

Dx9TextureLoader& Dx9TextureLoader::Format(const D3DFORMAT format)
Dx9TextureLoader& Dx9TextureLoader::Format(const oat::D3DFORMAT format)
{
m_format = format;
return *this;
Expand Down
4 changes: 2 additions & 2 deletions src/ObjLoading/Image/Dx9TextureLoader.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
class Dx9TextureLoader
{
MemoryManager* m_memory_manager;
D3DFORMAT m_format;
oat::D3DFORMAT m_format;
TextureType m_type;
bool m_has_mip_maps;
size_t m_width;
Expand All @@ -22,7 +22,7 @@ class Dx9TextureLoader
public:
explicit Dx9TextureLoader(MemoryManager* memoryManager);

Dx9TextureLoader& Format(D3DFORMAT format);
Dx9TextureLoader& Format(oat::D3DFORMAT format);
Dx9TextureLoader& Type(TextureType textureType);
Dx9TextureLoader& HasMipMaps(bool hasMipMaps);
Dx9TextureLoader& Width(size_t width);
Expand Down

0 comments on commit cd53c3c

Please sign in to comment.