[Mesa-dev] [Bug 30787] New: Invalid asm shader does not generate draw-time error when used with GLSL shader

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Oct 11 21:38:10 PDT 2010


https://bugs.freedesktop.org/show_bug.cgi?id=30787

           Summary: Invalid asm shader does not generate draw-time error
                    when used with GLSL shader
           Product: Mesa
           Version: 7.9
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Mesa core
        AssignedTo: mesa-dev at lists.freedesktop.org
        ReportedBy: idr at freedesktop.org


When a GLSL shader provides some stages (e.g., only vertex processing) and an
*invalid* assembly shader provides the rest (e.g., only fragment processing),
the expected draw-time error is not generated.  This is caused by the following
code from _mesa_valid_to_render.  Note that if there is a GLSL shader active,
the validity of the assembly shaders is not verified.

   if (ctx->Shader.CurrentProgram) {
      /* using shaders */
      if (!ctx->Shader.CurrentProgram->LinkStatus) {
         _mesa_error(ctx, GL_INVALID_OPERATION,
                     "%s(shader not linked)", where);
         return GL_FALSE;
      }
#if 0 /* not normally enabled */
      {
         char errMsg[100];
         if (!_mesa_validate_shader_program(ctx, ctx->Shader.CurrentProgram,
                                            errMsg)) {
            _mesa_warning(ctx, "Shader program %u is invalid: %s",
                          ctx->Shader.CurrentProgram->Name, errMsg);
         }
      }
#endif
   }
   else {
      if (ctx->VertexProgram.Enabled && !ctx->VertexProgram._Enabled) {
         _mesa_error(ctx, GL_INVALID_OPERATION,
                     "%s(vertex program not valid)", where);
         return GL_FALSE;
      }
      if (ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled) {
         _mesa_error(ctx, GL_INVALID_OPERATION,
                     "%s(fragment program not valid)", where);
         return GL_FALSE;
      }
   }

This bug is exercised by the piglit tests glsl-invalid-asm-01 and
glsl-invalid-asm-02.  Both of these tests pass on NVIDIA's closed-source Linux
driver but fail on Mesa.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the mesa-dev mailing list