[PATCH] Add query post pixelshader blending support to CheckDeviceFormat. This should make hl2 happy.
Roderick Colenbrander
thunderbird2k at gmx.net
Sat Mar 22 16:41:30 CDT 2008
---
dlls/wined3d/directx.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index bd66cfd..36b8f9a 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -2054,6 +2054,23 @@ static BOOL CheckSrgbWriteCapability(UINT Adapter, WINED3DDEVTYPE DeviceType, WI
return FALSE;
}
+/* Check if a format support blending in combination with pixel shaders */
+static BOOL CheckPostPixelShaderBlendingCapability(UINT Adapter, WINED3DFORMAT CheckFormat)
+{
+ const GlPixelFormatDesc *glDesc;
+ const StaticPixelFormatDesc *desc = getFormatDescEntry(CheckFormat, &GLINFO_LOCATION, &glDesc);
+
+ /* Fail if we weren't able to get a description of the format */
+ if(!desc || !glDesc)
+ return FALSE;
+
+ /* The flags entry of a format contains the post pixel shader blending capability */
+ if(glDesc->Flags & WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING)
+ return TRUE;
+
+ return FALSE;
+}
+
/* Check if a texture format is supported on the given adapter */
static BOOL CheckTextureCapability(UINT Adapter, WINED3DFORMAT CheckFormat)
{
@@ -2342,6 +2359,16 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
}
}
+ /* Check QUERY_POSTPIXELSHADER_BLENDING support */
+ if(Usage & WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING) {
+ if(CheckPostPixelShaderBlendingCapability(Adapter, CheckFormat)) {
+ UsageCaps |= WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING;
+ } else {
+ TRACE_(d3d_caps)("[FAILED] - No query post pixelshader blending support\n");
+ return WINED3DERR_NOTAVAILABLE;
+ }
+ }
+
/* Check QUERY_SRGBREAD support */
if(Usage & WINED3DUSAGE_QUERY_SRGBREAD) {
if(CheckSrgbReadCapability(Adapter, CheckFormat)) {
@@ -2464,6 +2491,16 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
}
}
+ /* Check QUERY_POSTPIXELSHADER_BLENDING support */
+ if(Usage & WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING) {
+ if(CheckPostPixelShaderBlendingCapability(Adapter, CheckFormat)) {
+ UsageCaps |= WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING;
+ } else {
+ TRACE_(d3d_caps)("[FAILED] - No query post pixelshader blending support\n");
+ return WINED3DERR_NOTAVAILABLE;
+ }
+ }
+
/* Check QUERY_SRGBREAD support */
if(Usage & WINED3DUSAGE_QUERY_SRGBREAD) {
if(CheckSrgbReadCapability(Adapter, CheckFormat)) {
@@ -2535,6 +2572,16 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
}
}
+ /* Check QUERY_POSTPIXELSHADER_BLENDING support */
+ if(Usage & WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING) {
+ if(CheckPostPixelShaderBlendingCapability(Adapter, CheckFormat)) {
+ UsageCaps |= WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING;
+ } else {
+ TRACE_(d3d_caps)("[FAILED] - No query post pixelshader blending support\n");
+ return WINED3DERR_NOTAVAILABLE;
+ }
+ }
+
/* Check QUERY_SRGBREAD support */
if(Usage & WINED3DUSAGE_QUERY_SRGBREAD) {
if(CheckSrgbReadCapability(Adapter, CheckFormat)) {
--
1.5.3.4
--========GMX293651206700683917973--
More information about the wine-patches
mailing list