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