feat(gx): add device states to d3d backend

This commit is contained in:
fallenoak 2023-03-07 08:51:06 -06:00 committed by GitHub
parent dad7f47b1d
commit 5738079891
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 193 additions and 1 deletions

View File

@ -227,6 +227,10 @@ CGxDeviceD3d::CGxDeviceD3d() : CGxDevice() {
// TODO
memset(this->m_deviceStates, 0xFF, sizeof(this->m_deviceStates));
// TODO
this->DeviceCreatePools();
this->DeviceCreateStreamBufs();
}

View File

@ -1,13 +1,200 @@
#ifndef GX_D3D_C_GX_DEVICE_D3D_HPP
#define GX_D3D_C_GX_DEVICE_D3D_HPP
#include "gx/CGxDevice.hpp"
#include "gx/CGxDevice.hpp"
#include <cstdint>
#include <d3d9.h>
#include <windows.h>
class CGxDeviceD3d : public CGxDevice {
public:
// Types
enum EDeviceState {
Ds_SrcBlend,
Ds_DstBlend,
Ds_TssMagFilter0,
Ds_TssMagFilter1,
Ds_TssMagFilter2,
Ds_TssMagFilter3,
Ds_TssMagFilter4,
Ds_TssMagFilter5,
Ds_TssMagFilter6,
Ds_TssMagFilter7,
Ds_TssMagFilter8,
Ds_TssMagFilter9,
Ds_TssMagFilter10,
Ds_TssMagFilter11,
Ds_TssMagFilter12,
Ds_TssMagFilter13,
Ds_TssMagFilter14,
Ds_TssMagFilter15,
Ds_TssMinFilter0,
Ds_TssMinFilter1,
Ds_TssMinFilter2,
Ds_TssMinFilter3,
Ds_TssMinFilter4,
Ds_TssMinFilter5,
Ds_TssMinFilter6,
Ds_TssMinFilter7,
Ds_TssMinFilter8,
Ds_TssMinFilter9,
Ds_TssMinFilter10,
Ds_TssMinFilter11,
Ds_TssMinFilter12,
Ds_TssMinFilter13,
Ds_TssMinFilter14,
Ds_TssMinFilter15,
Ds_TssMipFilter0,
Ds_TssMipFilter1,
Ds_TssMipFilter2,
Ds_TssMipFilter3,
Ds_TssMipFilter4,
Ds_TssMipFilter5,
Ds_TssMipFilter6,
Ds_TssMipFilter7,
Ds_TssMipFilter8,
Ds_TssMipFilter9,
Ds_TssMipFilter10,
Ds_TssMipFilter11,
Ds_TssMipFilter12,
Ds_TssMipFilter13,
Ds_TssMipFilter14,
Ds_TssMipFilter15,
Ds_TssWrapU0,
Ds_TssWrapU1,
Ds_TssWrapU2,
Ds_TssWrapU3,
Ds_TssWrapU4,
Ds_TssWrapU5,
Ds_TssWrapU6,
Ds_TssWrapU7,
Ds_TssWrapU8,
Ds_TssWrapU9,
Ds_TssWrapU10,
Ds_TssWrapU11,
Ds_TssWrapU12,
Ds_TssWrapU13,
Ds_TssWrapU14,
Ds_TssWrapU15,
Ds_TssWrapV0,
Ds_TssWrapV1,
Ds_TssWrapV2,
Ds_TssWrapV3,
Ds_TssWrapV4,
Ds_TssWrapV5,
Ds_TssWrapV6,
Ds_TssWrapV7,
Ds_TssWrapV8,
Ds_TssWrapV9,
Ds_TssWrapV10,
Ds_TssWrapV11,
Ds_TssWrapV12,
Ds_TssWrapV13,
Ds_TssWrapV14,
Ds_TssWrapV15,
Ds_TssTTF0,
Ds_TssTTF1,
Ds_TssTTF2,
Ds_TssTTF3,
Ds_TssTTF4,
Ds_TssTTF5,
Ds_TssTTF6,
Ds_TssTTF7,
Ds_TssMaxAnisotropy0,
Ds_TssMaxAnisotropy1,
Ds_TssMaxAnisotropy2,
Ds_TssMaxAnisotropy3,
Ds_TssMaxAnisotropy4,
Ds_TssMaxAnisotropy5,
Ds_TssMaxAnisotropy6,
Ds_TssMaxAnisotropy7,
Ds_TssMaxAnisotropy8,
Ds_TssMaxAnisotropy9,
Ds_TssMaxAnisotropy10,
Ds_TssMaxAnisotropy11,
Ds_TssMaxAnisotropy12,
Ds_TssMaxAnisotropy13,
Ds_TssMaxAnisotropy14,
Ds_TssMaxAnisotropy15,
Ds_TssTexCoordIndex0,
Ds_TssTexCoordIndex1,
Ds_TssTexCoordIndex2,
Ds_TssTexCoordIndex3,
Ds_TssTexCoordIndex4,
Ds_TssTexCoordIndex5,
Ds_TssTexCoordIndex6,
Ds_TssTexCoordIndex7,
Ds_TssColorOp0,
Ds_TssColorOp1,
Ds_TssColorOp2,
Ds_TssColorOp3,
Ds_TssColorOp4,
Ds_TssColorOp5,
Ds_TssColorOp6,
Ds_TssColorOp7,
Ds_TssAlphaOp0,
Ds_TssAlphaOp1,
Ds_TssAlphaOp2,
Ds_TssAlphaOp3,
Ds_TssAlphaOp4,
Ds_TssAlphaOp5,
Ds_TssAlphaOp6,
Ds_TssAlphaOp7,
Ds_TssColorArg10,
Ds_TssColorArg11,
Ds_TssColorArg12,
Ds_TssColorArg13,
Ds_TssColorArg14,
Ds_TssColorArg15,
Ds_TssColorArg16,
Ds_TssColorArg17,
Ds_TssColorArg20,
Ds_TssColorArg21,
Ds_TssColorArg22,
Ds_TssColorArg23,
Ds_TssColorArg24,
Ds_TssColorArg25,
Ds_TssColorArg26,
Ds_TssColorArg27,
Ds_TssAlphaArg10,
Ds_TssAlphaArg11,
Ds_TssAlphaArg12,
Ds_TssAlphaArg13,
Ds_TssAlphaArg14,
Ds_TssAlphaArg15,
Ds_TssAlphaArg16,
Ds_TssAlphaArg17,
Ds_TssAlphaArg20,
Ds_TssAlphaArg21,
Ds_TssAlphaArg22,
Ds_TssAlphaArg23,
Ds_TssAlphaArg24,
Ds_TssAlphaArg25,
Ds_TssAlphaArg26,
Ds_TssAlphaArg27,
Ds_AmbientMaterialSource,
Ds_DiffuseMaterialSource,
Ds_SpecularMaterialSource,
Ds_EmissiveMaterialSource,
Ds_Ambient,
Ds_AlphaBlendEnable,
Ds_AlphaTestEnable,
Ds_AlphaRef,
Ds_FogEnable,
Ds_ZWriteEnable,
Ds_ColorWriteEnable,
Ds_Lighting,
Ds_SpecularEnable,
Ds_CullMode,
Ds_ClipPlaneEnable,
Ds_ZFunc,
Ds_PointScaleA,
Ds_PointScaleB,
Ds_PointScaleC,
Ds_PointScaleEnable,
DeviceStates_Last,
};
// Static variables
static D3DFORMAT s_GxFormatToD3dFormat[];
static D3DFORMAT s_GxTexFmtToD3dFmt[];
@ -29,6 +216,7 @@ class CGxDeviceD3d : public CGxDevice {
D3DCAPS9 m_d3dCaps;
int32_t m_d3dIsHwDevice = 0;
D3DDISPLAYMODE m_desktopDisplayMode;
uint32_t m_deviceStates[DeviceStates_Last];
// Virtual member functions
virtual void ITexMarkAsUpdated(CGxTex* texId);