Allow enabling/disabling Direct3D usage of GLSL in Winecfg
Vit Hrachovy
vit.hrachovy at sandbox.cz
Thu Mar 22 04:48:14 CDT 2007
Hi,
according to thread 'WineCfg and DirectX options' at wine-devel, I'm
proposing a patch for winecfg to allow enabling/disabling usage of GLSL
for Direct3D applications rendering. Patch will add a checkbox into
Graphics -> Direct 3D section of Winecfg.
changelog entry: Allow enabling/disabling Direct3D usage of GLSL in Winecfg
Regards
Vit Hrachovy
-------------- next part --------------
diff --git a/programs/winecfg/En.rc b/programs/winecfg/En.rc
index c59d517..08b51e3 100644
--- a/programs/winecfg/En.rc
+++ b/programs/winecfg/En.rc
@@ -79,12 +79,13 @@ BEGIN
EDITTEXT IDC_DESKTOP_WIDTH,64,167,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED
EDITTEXT IDC_DESKTOP_HEIGHT,117,167,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED
- GROUPBOX " Direct3D ",IDC_STATIC,8,189,244,50
+ GROUPBOX " Direct3D ",IDC_STATIC,8,189,244,60
LTEXT "Vertex Shader Support: ",IDC_STATIC,15,199,80,30
COMBOBOX IDC_D3D_VSHADER_MODE,100,197,145,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Allow Pixel Shader (if supported by hardware)",IDC_D3D_PSHADER_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,216,230,10
+ CONTROL "Enable GLSL (if supported by hardware)",IDC_D3D_GLSL_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,230,230,10
END
IDD_DLLCFG DIALOG DISCARDABLE 0, 0, 260, 250
@@ -331,12 +332,13 @@ BEGIN
EDITTEXT IDC_DESKTOP_WIDTH,64,94,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED
EDITTEXT IDC_DESKTOP_HEIGHT,117,94,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED
- GROUPBOX " Direct3D ",IDC_STATIC,8,119,244,120
+ GROUPBOX " Direct3D ",IDC_STATIC,8,119,244,130
LTEXT "Vertex Shader Support: ",IDC_STATIC,15,129,80,30
COMBOBOX IDC_D3D_VSHADER_MODE,100,127,145,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Allow Pixel Shader (if supported by hardware)",IDC_D3D_PSHADER_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,144,230,10
+ CONTROL "Enable GLSL (if supported by hardware)",IDC_D3D_GLSL_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,154,245,10
END
IDD_DESKTOP_INTEGRATION DIALOG DISCARDABLE 0, 0, 260, 250
diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h
index 6bab26f..db99c90 100644
--- a/programs/winecfg/resource.h
+++ b/programs/winecfg/resource.h
@@ -149,6 +149,7 @@
#define IDC_DOUBLE_BUFFER 1104
#define IDC_D3D_VSHADER_MODE 1105
#define IDC_D3D_PSHADER_MODE 1106
+#define IDC_D3D_GLSL_MODE 1107
#define IDS_SHADER_MODE_HARDWARE 8100
#define IDS_SHADER_MODE_NONE 8101
diff --git a/programs/winecfg/x11drvdlg.c b/programs/winecfg/x11drvdlg.c
index 8fa183e..13bbbeb 100644
--- a/programs/winecfg/x11drvdlg.c
+++ b/programs/winecfg/x11drvdlg.c
@@ -164,6 +164,13 @@ static void init_dialog(HWND dialog)
CheckDlgButton(dialog, IDC_D3D_PSHADER_MODE, BST_UNCHECKED);
HeapFree(GetProcessHeap(), 0, buf);
+ buf = get_reg_key(config_key, keypath("Direct3D"), "UseGLSL", "enabled");
+ if (!strcmp(buf, "enabled"))
+ CheckDlgButton(dialog, IDC_D3D_GLSL_MODE, BST_CHECKED);
+ else
+ CheckDlgButton(dialog, IDC_D3D_GLSL_MODE, BST_UNCHECKED);
+ HeapFree(GetProcessHeap(), 0, buf);
+
updating_ui = FALSE;
}
@@ -238,6 +245,13 @@ static void on_d3d_pshader_mode_clicked(HWND dialog) {
set_reg_key(config_key, keypath("Direct3D"), "PixelShaderMode", "disabled");
}
+static void on_d3d_glsl_mode_clicked(HWND dialog) {
+ if (IsDlgButtonChecked(dialog, IDC_D3D_GLSL_MODE) == BST_CHECKED)
+ set_reg_key(config_key, keypath("Direct3D"), "UseGLSL", "enabled");
+ else
+ set_reg_key(config_key, keypath("Direct3D"), "UseGLSL", "disabled");
+}
+
INT_PTR CALLBACK
GraphDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
@@ -262,10 +276,11 @@ GraphDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
if (updating_ui) break;
SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0);
switch(LOWORD(wParam)) {
- case IDC_ENABLE_DESKTOP: on_enable_desktop_clicked(hDlg); break;
- case IDC_ENABLE_MANAGED: on_enable_managed_clicked(hDlg); break;
- case IDC_DX_MOUSE_GRAB: on_dx_mouse_grab_clicked(hDlg); break;
- case IDC_D3D_PSHADER_MODE: on_d3d_pshader_mode_clicked(hDlg); break;
+ case IDC_ENABLE_DESKTOP: on_enable_desktop_clicked(hDlg); break;
+ case IDC_ENABLE_MANAGED: on_enable_managed_clicked(hDlg); break;
+ case IDC_DX_MOUSE_GRAB: on_dx_mouse_grab_clicked(hDlg); break;
+ case IDC_D3D_PSHADER_MODE: on_d3d_pshader_mode_clicked(hDlg); break;
+ case IDC_D3D_GLSL_MODE: on_d3d_glsl_mode_clicked(hDlg); break;
}
break;
}
More information about the wine-patches
mailing list