[Mesa-dev] [PATCH v5 00/29] add fp64 support to mesa and glsl compiler

Ilia Mirkin imirkin at alum.mit.edu
Tue Feb 10 03:58:40 PST 2015


I spent a lot of quality time with Ian's random_ubo.py script, and I'm
happy to report that with the current iteration, it doesn't spot any
problems (after ~1000 shaders). I only had to make the following
change to it:

diff --git a/generated_tests/random_ubo.py b/generated_tests/random_ubo.py
index 33359f6..e3f999e 100644
--- a/generated_tests/random_ubo.py
+++ b/generated_tests/random_ubo.py
@@ -763,8 +763,8 @@ def scalar_derp(type, name, offset, data):
         # 0xHHHHHHHHLLLLLLLL
         # 012345678901234567
 
-        hi = "0x" + bits[2:9]
-        lo = "0x" + bits[10:17]
+        hi = "0x" + bits[2:10]
+        lo = "0x" + bits[10:18]
 
         return "!double_match({}, uvec2({}, {}))".format(name, lo, hi)
     else:
@@ -1734,7 +1734,7 @@ if __name__ == "__main__":
         extensions = []
 
     # Pick a random GLSL version from the available set of possible versions.
-    glsl_version = random.choice([v for v in [130, 140, 150, 400, 430]
+    glsl_version = random.choice([v for v in [140, 150, 400, 430]
                                   if v <= max_glsl_version])
 
     # Use the GLSL version filter out some extensions that are redundant.

As well as apply the shader_runner patches from the list. I had to
remove version 130 because it causes a non-core context to be created,
which means that there's no fp64 support.

Also all of the current piglit fp64 tests pass both on softpipe and
nvc0. Dave has them all passing on r600 without sb, and getting close
with it.

Tapani's "glsl: validate output types for shader stages" patch is
necessary for the piglit that its description references to pass. If
you have a better suggestion of where to put that code, let me know.

Hopefully this is getting closer to pushable... Patch series also
available at https://github.com/imirkin/mesa/commits/fp64-6 .

Dave Airlie (24):
  glapi: add ARB_gpu_shader_fp64 (v2)
  mesa: add ARB_gpu_shader_fp64 extension info (v2)
  mesa: add double uniform support. (v5)
  glsl: add ARB_gpu_shader_fp64 to the glsl extensions. (v2)
  glsl: Add double builtin type generation
  glsl: Uniform linking support for doubles
  glsl/ir: Add builtin function support for doubles
  glsl/ir: Add printing support for doubles
  glsl/ir: Add cloning support for doubles
  glsl/ir: Add builtin constant function support for doubles
  glsl/ir: Add builder support for functions with double floats
  glsl: Add support doubles in optimization passes
  glsl: Add ubo lowering support for doubles
  glsl/ast: Support double floats
  glsl/parser: Support double floats
  glsl/lexer: Support double floats
  glsl: Support double inouts
  glsl: Support double loop control
  glsl: Linking support for doubles
  glsl: add double support to lower_mat_op_to_vec
  glsl: enable/disable certain lowering passes for doubles
  glsl/lower_instructions: add double lowering passes
  glsl: implement double builtin functions
  glsl: lower double optional passes (v2)

Ilia Mirkin (4):
  glsl: Add double builtin type
  glsl: fix uniform linking logic in the presence of structs
  glsl: add a lowering pass for frexp/ldexp with double arguments
  glsl/tests: add DOUBLE/IMAGE types

Tapani Pälli (1):
  glsl: validate output types for shader stages

 src/glsl/ast.h                                     |   2 +
 src/glsl/ast_function.cpp                          |  66 +-
 src/glsl/ast_to_hir.cpp                            |  78 ++-
 src/glsl/builtin_functions.cpp                     | 751 ++++++++++++++-------
 src/glsl/builtin_type_macros.h                     |  16 +
 src/glsl/builtin_types.cpp                         |  30 +
 src/glsl/glcpp/glcpp-parse.y                       |   3 +
 src/glsl/glsl_lexer.ll                             |  31 +-
 src/glsl/glsl_parser.yy                            |  33 +-
 src/glsl/glsl_parser_extras.cpp                    |   5 +
 src/glsl/glsl_parser_extras.h                      |   7 +
 src/glsl/glsl_types.cpp                            | 112 ++-
 src/glsl/glsl_types.h                              |  20 +-
 src/glsl/ir.cpp                                    | 111 ++-
 src/glsl/ir.h                                      |  22 +
 src/glsl/ir_builder.cpp                            |  23 +
 src/glsl/ir_builder.h                              |   5 +
 src/glsl/ir_clone.cpp                              |   1 +
 src/glsl/ir_constant_expression.cpp                | 247 ++++++-
 src/glsl/ir_optimization.h                         |   2 +
 src/glsl/ir_print_visitor.cpp                      |  11 +
 src/glsl/ir_set_program_inouts.cpp                 |  28 +-
 src/glsl/ir_validate.cpp                           |  72 +-
 src/glsl/link_uniform_blocks.cpp                   |  45 +-
 src/glsl/link_uniform_initializers.cpp             |   8 +-
 src/glsl/link_uniforms.cpp                         |  44 +-
 src/glsl/linker.h                                  |   6 +
 src/glsl/loop_controls.cpp                         |   8 +-
 src/glsl/lower_instructions.cpp                    | 525 +++++++++++++-
 src/glsl/lower_mat_op_to_vec.cpp                   |   2 +
 src/glsl/lower_ubo_reference.cpp                   |  57 +-
 src/glsl/opt_algebraic.cpp                         |  26 +-
 src/glsl/opt_constant_propagation.cpp              |   3 +
 src/glsl/opt_minmax.cpp                            |  13 +
 src/glsl/standalone_scaffolding.cpp                |   1 +
 src/glsl/tests/uniform_initializer_utils.cpp       |  12 +
 src/mapi/glapi/gen/ARB_gpu_shader_fp64.xml         | 143 ++++
 src/mapi/glapi/gen/ARB_separate_shader_objects.xml |   2 -
 src/mapi/glapi/gen/Makefile.am                     |   1 +
 src/mapi/glapi/gen/gl_API.xml                      |   2 +
 src/mesa/main/extensions.c                         |   1 +
 src/mesa/main/mtypes.h                             |   1 +
 src/mesa/main/tests/dispatch_sanity.cpp            |  70 +-
 src/mesa/main/uniform_query.cpp                    |  46 +-
 src/mesa/main/uniforms.c                           | 380 ++++++++++-
 src/mesa/main/uniforms.h                           |  92 ++-
 src/mesa/program/ir_to_mesa.cpp                    |  37 +-
 47 files changed, 2714 insertions(+), 487 deletions(-)
 create mode 100644 src/mapi/glapi/gen/ARB_gpu_shader_fp64.xml

-- 
2.0.5



More information about the mesa-dev mailing list