[Mesa-dev] [PATCH v3 06/29] glsl: add ARB_gpu_shader_fp64 to the glsl extensions. (v2)

Ilia Mirkin imirkin at alum.mit.edu
Sun Feb 8 12:28:09 PST 2015


Yes. nvc0+ (fermi+) has fp64 support [and the G200 chip also has a
bunch, tbd whether we'll bother supporting it]. radeon si/cik also has
it. Only some r600 eg/ni-based cards have hw support (generally
speaking, the higher end ones), the rest will have to emulate it. I
believe that intel gen7 (ivb) and later have enough to make it happen
too.

On Sun, Feb 8, 2015 at 3:21 PM, Aditya Avinash <adityaavinash1 at gmail.com> wrote:
> Interesting... Does the actual hardware support double? (atleast for nv0)
> Thank you!
>
> On Sun, Feb 8, 2015 at 12:20 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>
>> It all works fine on nvc0 and softpipe with my branch at
>>
>> https://github.com/imirkin/mesa/commits/fp64-4
>>
>> This branch also includes Dave's preliminary work on r600/cayman, not
>> sure how far along it is, I believe it's still missing a few things.
>> The nvc0 implementation needs a few more finishing touches for
>> handling RCP and RSQ better (just adding a couple of steps of
>> Newton-Raphson, since the hw only computes 32 bits of the 64-bit
>> result).
>>
>>
>> On Sun, Feb 8, 2015 at 12:04 PM, Aditya Avinash
>> <adityaavinash1 at gmail.com> wrote:
>> > Hi,
>> > How far is glsl compiler working for fp64 shader?
>> >
>> > On Sun, Feb 8, 2015 at 4:00 AM, Ilia Mirkin <imirkin at alum.mit.edu>
>> > wrote:
>> >>
>> >> From: Dave Airlie <airlied at redhat.com>
>> >>
>> >> v2: add define bit (Tapani Pälli)
>> >>
>> >> Patch makes following Piglit tests pass:
>> >>    arb_gpu_shader_fp64/preprocessor/define.vert
>> >>    arb_gpu_shader_fp64/preprocessor/define.frag
>> >>
>> >> Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
>> >> Signed-off-by: Dave Airlie <airlied at redhat.com>
>> >> Reviewed-by: Matt Turner <mattst88 at gmail.com>
>> >> ---
>> >>  src/glsl/glcpp/glcpp-parse.y        | 3 +++
>> >>  src/glsl/glsl_parser_extras.cpp     | 1 +
>> >>  src/glsl/glsl_parser_extras.h       | 2 ++
>> >>  src/glsl/standalone_scaffolding.cpp | 1 +
>> >>  4 files changed, 7 insertions(+)
>> >>
>> >> diff --git a/src/glsl/glcpp/glcpp-parse.y
>> >> b/src/glsl/glcpp/glcpp-parse.y
>> >> index e5bebe5..c2f5223 100644
>> >> --- a/src/glsl/glcpp/glcpp-parse.y
>> >> +++ b/src/glsl/glcpp/glcpp-parse.y
>> >> @@ -2445,6 +2445,9 @@
>> >> _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser,
>> >> intmax_t
>> >> versio
>> >>               if (extensions->ARB_gpu_shader5)
>> >>                  add_builtin_define(parser, "GL_ARB_gpu_shader5", 1);
>> >>
>> >> +              if (extensions->ARB_gpu_shader_fp64)
>> >> +                 add_builtin_define(parser, "GL_ARB_gpu_shader_fp64",
>> >> 1);
>> >> +
>> >>               if (extensions->AMD_vertex_shader_layer)
>> >>                  add_builtin_define(parser,
>> >> "GL_AMD_vertex_shader_layer",
>> >> 1);
>> >>
>> >> diff --git a/src/glsl/glsl_parser_extras.cpp
>> >> b/src/glsl/glsl_parser_extras.cpp
>> >> index ccdf031..cb19ce1 100644
>> >> --- a/src/glsl/glsl_parser_extras.cpp
>> >> +++ b/src/glsl/glsl_parser_extras.cpp
>> >> @@ -527,6 +527,7 @@ static const _mesa_glsl_extension
>> >> _mesa_glsl_supported_extensions[] = {
>> >>     EXT(ARB_fragment_coord_conventions, true,  false,
>> >> ARB_fragment_coord_conventions),
>> >>     EXT(ARB_fragment_layer_viewport,    true,  false,
>> >> ARB_fragment_layer_viewport),
>> >>     EXT(ARB_gpu_shader5,                true,  false,
>> >> ARB_gpu_shader5),
>> >> +   EXT(ARB_gpu_shader_fp64,            true,  false,
>> >> ARB_gpu_shader_fp64),
>> >>     EXT(ARB_sample_shading,             true,  false,
>> >> ARB_sample_shading),
>> >>     EXT(ARB_separate_shader_objects,    true,  false,     dummy_true),
>> >>     EXT(ARB_shader_atomic_counters,     true,  false,
>> >> ARB_shader_atomic_counters),
>> >> diff --git a/src/glsl/glsl_parser_extras.h
>> >> b/src/glsl/glsl_parser_extras.h
>> >> index 843fdae..dafee4e 100644
>> >> --- a/src/glsl/glsl_parser_extras.h
>> >> +++ b/src/glsl/glsl_parser_extras.h
>> >> @@ -414,6 +414,8 @@ struct _mesa_glsl_parse_state {
>> >>     bool ARB_fragment_layer_viewport_warn;
>> >>     bool ARB_gpu_shader5_enable;
>> >>     bool ARB_gpu_shader5_warn;
>> >> +   bool ARB_gpu_shader_fp64_enable;
>> >> +   bool ARB_gpu_shader_fp64_warn;
>> >>     bool ARB_sample_shading_enable;
>> >>     bool ARB_sample_shading_warn;
>> >>     bool ARB_separate_shader_objects_enable;
>> >> diff --git a/src/glsl/standalone_scaffolding.cpp
>> >> b/src/glsl/standalone_scaffolding.cpp
>> >> index 67b0d0c..ad0d75b 100644
>> >> --- a/src/glsl/standalone_scaffolding.cpp
>> >> +++ b/src/glsl/standalone_scaffolding.cpp
>> >> @@ -127,6 +127,7 @@ void initialize_context_to_defaults(struct
>> >> gl_context
>> >> *ctx, gl_api api)
>> >>     ctx->Extensions.ARB_fragment_coord_conventions = true;
>> >>     ctx->Extensions.ARB_fragment_layer_viewport = true;
>> >>     ctx->Extensions.ARB_gpu_shader5 = true;
>> >> +   ctx->Extensions.ARB_gpu_shader_fp64 = true;
>> >>     ctx->Extensions.ARB_sample_shading = true;
>> >>     ctx->Extensions.ARB_shader_bit_encoding = true;
>> >>     ctx->Extensions.ARB_shader_stencil_export = true;
>> >> --
>> >> 2.0.5
>> >>
>> >> _______________________________________________
>> >> mesa-dev mailing list
>> >> mesa-dev at lists.freedesktop.org
>> >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>> >
>> >
>> >
>> >
>> > --
>> > Regards,
>> > Aditya Atluri,
>> > USA.
>> >
>
>
>
>
> --
> Regards,
> Aditya Atluri,
> USA.
>


More information about the mesa-dev mailing list