From 2e1cf4d9486fcdfa9dabe0407ff9a8c653bedad6 Mon Sep 17 00:00:00 2001 From: Ivan Gyurdiev Date: Tue, 5 Sep 2006 03:40:24 -0400 Subject: [PATCH] wined3d: Add support for R32F and R16F texture formats. --- dlls/wined3d/directx.c | 4 ++-- dlls/wined3d/utils.c | 4 ++-- include/wine/wined3d_gl.h | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index c4131750a76..d4a0e972bed 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -1650,8 +1650,10 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt BOOL half_pixel_support = GL_SUPPORT(ARB_HALF_FLOAT_PIXEL); switch (CheckFormat) { + case D3DFMT_R16F: case D3DFMT_A16B16G16R16F: if (!half_pixel_support) break; + case D3DFMT_R32F: case D3DFMT_A32B32G32R32F: TRACE_(d3d_caps)("[OK]\n"); return WINED3D_OK; @@ -1748,9 +1750,7 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt /***** * Float formats: Not supported right now */ - case WINED3DFMT_R16F: case WINED3DFMT_G16R16F: - case WINED3DFMT_R32F: case WINED3DFMT_G32R32F: case WINED3DFMT_CxV8U8: TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 372fdb19fbe..e0778c09ba8 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -47,13 +47,13 @@ static const PixelFormatDesc formats[] = { {WINED3DFMT_G8R8_G8B8 ,0x0 ,0x0 ,0x0 ,0x0 ,1/*?*/ ,TRUE ,0 ,0 ,0 }, {WINED3DFMT_R8G8_B8G8 ,0x0 ,0x0 ,0x0 ,0x0 ,1/*?*/ ,TRUE ,0 ,0 ,0 }, /* IEEE formats */ - {WINED3DFMT_R32F ,0x0 ,0x0 ,0x0 ,0x0 ,4 ,FALSE ,0 ,0 ,0 }, + {WINED3DFMT_R32F ,0x0 ,0x0 ,0x0 ,0x0 ,4 ,FALSE ,GL_RGB32F_ARB ,GL_RED ,GL_FLOAT }, {WINED3DFMT_G32R32F ,0x0 ,0x0 ,0x0 ,0x0 ,8 ,FALSE ,0 ,0 ,0 }, {WINED3DFMT_A32B32G32R32F,0x0 ,0x0 ,0x0 ,0x0 ,16 ,FALSE ,GL_RGBA32F_ARB ,GL_RGBA ,GL_FLOAT }, /* Hmm? */ {WINED3DFMT_CxV8U8 ,0x0 ,0x0 ,0x0 ,0x0 ,2 ,FALSE ,0 ,0 ,0 }, /* Float */ - {WINED3DFMT_R16F ,0x0 ,0x0 ,0x0 ,0x0 ,2 ,FALSE ,0 ,0 ,0 }, + {WINED3DFMT_R16F ,0x0 ,0x0 ,0x0 ,0x0 ,2 ,FALSE ,GL_RGB16F_ARB ,GL_RED ,GL_HALF_FLOAT_ARB }, {WINED3DFMT_G16R16F ,0x0 ,0x0 ,0x0 ,0x0 ,4 ,FALSE ,0 ,0 ,0 }, {WINED3DFMT_A16B16G16R16F,0x0 ,0x0 ,0x0 ,0x0 ,8 ,FALSE ,GL_RGBA16F_ARB ,GL_RGBA ,GL_HALF_FLOAT_ARB }, /* Palettized formats */ diff --git a/include/wine/wined3d_gl.h b/include/wine/wined3d_gl.h index 36e9a203406..1a589a5667d 100644 --- a/include/wine/wined3d_gl.h +++ b/include/wine/wined3d_gl.h @@ -477,7 +477,9 @@ typedef void (APIENTRY * PGLFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint leve #ifndef GL_ARB_texture_float #define GL_ARB_texture_float 1 #define GL_RGBA32F_ARB 0x8814 +#define GL_RGB32F_ARB 0x8815 #define GL_RGBA16F_ARB 0x881A +#define GL_RGB16F_ARB 0x881B #endif /* GL_ARB_half_float_pixel */ #ifndef GL_ARB_half_float_pixel