Surface Descriptor

サーフェス・ディスクリプタ


サーフェス・ディスクリプタ構造体は、下記のようなメンバを持ちます。

typedef struct tagKMSURFACEDESC
{
KMDWORD SurfaceType;
KMDWORD BitDepth;
KMDWORD PixelFormat;
union{
KMDWORD USize;
KMDWORD Width;
} u0;
union{
KMDWORD VSize;
KMDWORD Height;
} u1;
union {
KMDWORD dwTextureSize;
KMDWORD dwFrameBufferSize;
} uSize;
KMDWORD fSurfaceFlags;
PKMDWORD pSurface;
PKMDWORD pVirtual;
PKMDWORD pPhysical;
} KMSURFACEDESC, *PKMSURFACEDESC, **PPKMSURFACEDESC;

各メンバの詳細は下記の通りです。

typedef struct tagKMSURFACEDESC
{
KMDWORD SurfaceType;
サーフェスのタイプを示します。 以下のいずれかが格納されます。
SurfaceType 意味
KM_SURFACETYPE_FRAMEBUFFER フレームバッファ
KM_SURFACETYPE_TEXTURE テクスチャ
KM_SURFACETYPE_SMALLVQ_TEXTURE SmallVQテクスチャ
注:このメンバの上位16ビットは、Ninjaのために予約されています。
KMDWORD BitDepth;
何ビット/pixelかを示します。 以下のいずれかが格納されます。
BitDepth 意味
KM_BITDEPTH_16 1pixel = 16bit
KM_BITDEPTH_24 1pixel = 24bit
KM_BITDEPTH_32 1pixel = 32bit
KMDWORD PixelFormat;
ピクセルフォーマットを示します。 以下のいずれかが格納されます。
フレームバッファの場合
PixelFormat 意味
KM_DSPBPP_RGB565 RGB-565形式
KM_DSPBPP_RGB555 RGB-555形式
KM_DSPBPP_ARGB1555 ARGB-1555形式
KM_DSPBPP_RGB888 RGB-888形式
KM_DSPBPP_ARGB8888 ARGB-8888形式

テクスチャの場合
PixelFormat 意味
KM_PIXELFORMAT_ARGB1555 ARGB-1555形式
KM_PIXELFORMAT_RGB565 RGB-565形式
KM_PIXELFORMAT_ARGB4444 ARGB-4444形式
KM_PIXELFORMAT_YUV422 YUV-422形式
KM_PIXELFORMAT_BUMP バンプマップ
KM_PIXELFORMAT_PALETTIZED_4BPP 4bppパレット形式
KM_PIXELFORMAT_PALETTIZED_8BPP 8bppパレット形式
union{
KMDWORD USize;
テクスチャの場合の横方向のサイズです。 以下のいずれかが格納されます。
USize 意味
KM_MAPSIZE_8 横サイズ8ピクセル
KM_MAPSIZE_16 横サイズ16ピクセル
KM_MAPSIZE_32 横サイズ32ピクセル
KM_MAPSIZE_64 横サイズ64ピクセル
KM_MAPSIZE_128 横サイズ128ピクセル
KM_MAPSIZE_256 横サイズ256ピクセル
KM_MAPSIZE_512 横サイズ512ピクセル
KM_MAPSIZE_1024 横サイズ1024ピクセル
KMDWORD Width;
フレームバッファの場合の横方向のサイズです。
} u0;
union{
KMDWORD VSize;
テクスチャの場合の縦方向のサイズです。 以下のいずれかが格納されます。
VSize 意味
KM_MAPSIZE_8 縦サイズ8ピクセル
KM_MAPSIZE_16 縦サイズ16ピクセル
KM_MAPSIZE_32 縦サイズ32ピクセル
KM_MAPSIZE_64 縦サイズ64ピクセル
KM_MAPSIZE_128 縦サイズ128ピクセル
KM_MAPSIZE_256 縦サイズ256ピクセル
KM_MAPSIZE_512 縦サイズ512ピクセル
KM_MAPSIZE_1024 縦サイズ1024ピクセル
KMDWORD Height;
フレームバッファの場合の縦方向のサイズです。
} u1;
union {
KMDWORD dwTextureSize;
テクスチャ領域のサイズ(byte)です。
KMDWORD dwFrameBufferSize;
フレームバッファ領域のサイズ(byte)です。
} uSize;
KMDWORD fSurfaceFlags;
サーフェスの属性を示すフラグです。 以下の値が格納されます。
フレームバッファの場合
bit 00... フル画面バッファ 1... StripBuffer使用

テクスチャの場合
bit 00... Non MipMap 1... MipMapped
bit 1don't care
bit 20... Rectangle 1... Twiddled
bit 30... NonVQ 1... VQed Texture
bit 40... NonStride 1... Stride Select
bit 50... Non Palettized 1... Palettized
テクスチャの場合、以下のフラグの論理和がセットされます。
fSurfaceFlags 意味
KM_SURFACEFLAGS_MIPMAPED ミップマップを持つことを示します
KM_SURFACEFLAGS_TWIDDLED TWIDDLED形式であることを示します
KM_SURFACEFLAGS_VQ VQ / SmallVQ 圧縮形式を示します
KM_SURFACEFLAGS_STRIDE ストライド指定ありを示します
KM_SURFACEFLAGS_PALETTIZED パレッタイズドテクスチャを示します
PKMDWORD pSurface;
サーフェースインスタンスへのポインタです。
PKMDWORD pVirtual;
Texture instance ( Virtual address on SH4 )
PKMDWORD pPhysical;
Texture instance ( physical address on SH4 )
} KMSURFACEDESC, *PKMSURFACEDESC, **PPKMSURFACEDESC;

  Surface Descriptor