Simplify generate_base_shader() when checking for USING_GLSL usage.

Jason Green jave27 at gmail.com
Thu May 18 12:43:32 CDT 2006


Just makes the function more readable and has fewer USING_GLSL checks.
-------------- next part --------------
Subject: [PATCH 2/3] Simplify generate_base_shader() when checking for GLSL usage.

Reduce the number of checks against USING_GLSL.

---

 dlls/wined3d/baseshader.c |   29 ++++++++---------------------
 1 files changed, 8 insertions(+), 21 deletions(-)

060521fb3909e0c99fab6cc36f5a75124e1e9680
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c
index 98fa795..6629d58 100644
--- a/dlls/wined3d/baseshader.c
+++ b/dlls/wined3d/baseshader.c
@@ -551,6 +551,7 @@ void generate_base_shader(
     IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface;
     const DWORD *pToken = pFunction;
     const SHADER_OPCODE *curOpcode = NULL;
+    SHADER_HANDLER hw_fct = NULL;
     DWORD opcode_token;
     DWORD i;
 
@@ -568,10 +569,12 @@ void generate_base_shader(
     */
 
     /* Pre-declare registers */
-    if (USING_GLSL)
+    if (USING_GLSL) {
         generate_glsl_declarations(iface, buffer);
-    else
+        shader_addline(buffer, "void main() {\n");
+    } else {
         generate_arb_declarations(iface, buffer);
+    }
 
     /* Second pass, process opcodes */
     if (NULL != pToken) {
@@ -595,28 +598,15 @@ void generate_base_shader(
             /* Read opcode */
             opcode_token = *pToken++;
             curOpcode = shader_get_opcode(iface, opcode_token);
+            hw_fct = USING_GLSL ? curOpcode->hw_glsl_fct : curOpcode->hw_fct;
 
             /* Unknown opcode and its parameters */
            if (NULL == curOpcode) {
               FIXME("Unrecognized opcode: token=%08lX\n", opcode_token);
               pToken += shader_skip_unrecognized(iface, pToken); 
 
-            /* Using GLSL & no generator function exists */
-            } else if (USING_GLSL && curOpcode->hw_glsl_fct == NULL) {
-
-                FIXME("Token %s is not yet implemented with GLSL\n", curOpcode->name);
-                pToken += shader_skip_opcode(This, curOpcode, opcode_token);
-
-            /* Unhandled opcode in ARB */
-            } else if ( !USING_GLSL && GLNAME_REQUIRE_GLSL == curOpcode->glname) {
-
-                FIXME("Token %s requires greater functionality than "
-                    "Vertex or Fragment_Program_ARB supports\n", curOpcode->name);
-                pToken += shader_skip_opcode(This, curOpcode, opcode_token);
-
             /* If a generator function is set for current shader target, use it */
-            } else if ((!USING_GLSL && curOpcode->hw_fct != NULL) ||
-                       (USING_GLSL && curOpcode->hw_glsl_fct != NULL)) {
+            } else if (hw_fct != NULL) {
 
                 SHADER_OPCODE_ARG hw_arg;
 
@@ -656,10 +646,7 @@ void generate_base_shader(
                 }
 
                 /* Call appropriate function for output target */
-                if (USING_GLSL)
-                    curOpcode->hw_glsl_fct(&hw_arg);
-                else
-                    curOpcode->hw_fct(&hw_arg);
+                hw_fct(&hw_arg);
 
             } else {
 
-- 
1.1.3


More information about the wine-patches mailing list