-
Notifications
You must be signed in to change notification settings - Fork 57
Open
Milestone
Description
Details
x86-64 branch has potentially working IMAGE FORMATS, but it cause ShaderAPIDX8::CreateD3DTexture: Invalid color format! on creating:
if BRANCH == "x86-64" then -- CS:GO ids
IMAGE_FORMAT_RG1616F = 30
IMAGE_FORMAT_RG3232F = 31
IMAGE_FORMAT_RGBA1010102 = 36 -- 10 bit-per component render targets
IMAGE_FORMAT_BGRA1010102 = 37
IMAGE_FORMAT_R16F = 38 -- 16 bit FP format
endThis formats is valid for GTX1650, GTX660, using IsTextureFormatOk func from IDirect3D9::CheckDeviceFormat method (d3d9helper.h):
void IsTextureFormatOk(D3DFORMAT TextureFormat, D3DFORMAT g_DeviceFormat, int nUsage)
{
UINT g_DisplayAdapter = D3DADAPTER_DEFAULT;
D3DDEVTYPE g_DeviceType = D3DDEVTYPE_HAL;
HRESULT hr = pD3D->CheckDeviceFormat(
g_DisplayAdapter, g_DeviceType, g_DeviceFormat,
nUsage, ((nUsage & D3DUSAGE_DEPTHSTENCIL) != 0 || ForceTypeSurface(TextureFormat)) ? D3DRTYPE_SURFACE : D3DRTYPE_TEXTURE, TextureFormat);
bool state = SUCCEEDED(hr);
SetConsoleColor(state ? GREEN : RED);
const char* fmt = D3DFormatToString(TextureFormat);
std::cout << fmt << (state ? " VALID" : " INVALID") << "\n";
}Here result of testing for many image formats. D3DFMT_G16R16, D3DFMT_A2R10G10B10, D3DFMT_R16F, D3DFMT_G16R16F, D3DFMT_A2B10G10R10 is valid here.
DxTest.cpp result (GTX 1650):
- Here also
D3DFMT_D32invalid. It could be replaced with a working format:D3DFMT_D32F_LOCKABLE. But this is a separate proposal. IMAGE_FORMAT_RGB323232F = 28(main,x86-64) doesn't exist in DX9. It can also be replaced with anything. And it won't harm anyone, since this form could never be used by anyone. For example:D3DFMT_L16or maybeR2VB —.(D3DFORMAT)MAKEFOURCC('R', '2', 'V', 'B')D24S8andD24X8should works, but they not.
IMAGE_FORMAT_D24S8 = 42 -- ShaderAPIDX8::CreateD3DTexture: Invalid color format!
IMAGE_FORMAT_D24X8 = 44 -- ShaderAPIDX8::CreateD3DTexture: Invalid color format!
IMAGE_FORMAT_D24X8_SHADOW = 48 -- worksD32 test:
-- x86-64
IMAGE_FORMAT_D32 = 41
local size = 1024
local rtFlags = render.GetHDREnabled() and CREATERENDERTARGETFLAGS_HDR or 0
GetRenderTargetEx("_rt_shadowdepthtexture_0", size, size,
RT_SIZE_OFFSCREEN, MATERIAL_RT_DEPTH_ONLY, bit.bor(1, 4, 8), rtFlags, IMAGE_FORMAT_D32)
-- ShaderAPIDX8::CreateD3DTexture: Invalid color format!Steps to reproduce
- Run code:
if BRANCH != "x86-64" then return end
IMAGE_FORMAT_RG1616F = 30
IMAGE_FORMAT_RG3232F = 31
IMAGE_FORMAT_RGBA1010102 = 36
IMAGE_FORMAT_BGRA1010102 = 37
IMAGE_FORMAT_R16F = 38
print("IMAGE_FORMAT_RG1616F")
GetRenderTargetEx( "_rt_test_rg1616f", ScrW(), ScrW(),
RT_SIZE_FULL_FRAME_BUFFER, MATERIAL_RT_DEPTH_NONE,
0, 0, IMAGE_FORMAT_RG1616F )
print("IMAGE_FORMAT_RG3232F")
GetRenderTargetEx( "_rt_test_rg3232f", ScrW(), ScrW(),
RT_SIZE_FULL_FRAME_BUFFER, MATERIAL_RT_DEPTH_NONE,
0, 0, IMAGE_FORMAT_RG3232F)
print("IMAGE_FORMAT_RGBA1010102")
GetRenderTargetEx( "_rt_test_rgba1010102", ScrW(), ScrW(),
RT_SIZE_FULL_FRAME_BUFFER, MATERIAL_RT_DEPTH_NONE,
0, 0, IMAGE_FORMAT_RGBA1010102 )
print("IMAGE_FORMAT_BGRA1010102")
GetRenderTargetEx( "_rt_test_bgra1010102", ScrW(), ScrW(),
RT_SIZE_FULL_FRAME_BUFFER, MATERIAL_RT_DEPTH_NONE,
0, 0, IMAGE_FORMAT_BGRA1010102)
print("IMAGE_FORMAT_R16F")
GetRenderTargetEx( "_rt_test_rg16f", ScrW(), ScrW(),
RT_SIZE_FULL_FRAME_BUFFER, MATERIAL_RT_DEPTH_NONE,
0, 0, IMAGE_FORMAT_R16F)- Check console for
ShaderAPIDX8::CreateD3DTexture: Invalid color format!errors.
IMAGE_FORMAT_RG1616F
ShaderAPIDX8::CreateD3DTexture: Invalid color format!
IMAGE_FORMAT_RG3232F
ShaderAPIDX8::CreateD3DTexture: Invalid color format!
IMAGE_FORMAT_RGBA1010102
ShaderAPIDX8::CreateD3DTexture: Invalid color format!
IMAGE_FORMAT_BGRA1010102
ShaderAPIDX8::CreateD3DTexture: Invalid color format!
IMAGE_FORMAT_R16F
ShaderAPIDX8::CreateD3DTexture: Invalid color format!
Version of the game
Protocol version 24
Network version 2025.03.26 (garrysmod)
Exe build: 16:56:56 Jan 28 2026 (9944) (4000)
GMod version 2026.01.28, branch: x86-64, multicore: 1
Windows 64bit
Beta
x86-64 beta
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels