On 08/08/2018 07:12 PM, Marek Olšák wrote: > From: Marek Olšák <marek.ol...@amd.com> > > because the closed driver exposes it. > > It's equivalent to ARB_gpu_shader_int64. > In this patch, I did everything the same as we do for ARB_gpu_shader_int64.
The closed driver only exposes this on core profile? That's unexpected. Either way, this patch is Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> > --- > docs/relnotes/18.3.0.html | 1 + > src/compiler/glsl/builtin_functions.cpp | 3 +- > src/compiler/glsl/builtin_types.cpp | 3 +- > src/compiler/glsl/glsl_lexer.ll | 18 +- > src/compiler/glsl/glsl_parser_extras.cpp | 1 + > src/compiler/glsl/glsl_parser_extras.h | 5 +- > src/mapi/glapi/gen/AMD_gpu_shader_int64.xml | 239 ++++++++++++++++++++ > src/mapi/glapi/gen/gl_API.xml | 2 + > src/mesa/main/extensions_table.h | 1 + > 9 files changed, 261 insertions(+), 12 deletions(-) > create mode 100644 src/mapi/glapi/gen/AMD_gpu_shader_int64.xml > > diff --git a/docs/relnotes/18.3.0.html b/docs/relnotes/18.3.0.html > index ac2cc1e893b..840a336d41a 100644 > --- a/docs/relnotes/18.3.0.html > +++ b/docs/relnotes/18.3.0.html > @@ -45,20 +45,21 @@ TBD. > > > <h2>New features</h2> > > <p> > Note: some of the new features are only available with certain drivers. > </p> > > <ul> > <li>GL_AMD_framebuffer_multisample_advanced on radeonsi.</li> > +<li>GL_AMD_gpu_shader_int64 on i965, nvc0, radeonsi.</li> > <li>GL_EXT_window_rectangles on radeonsi.</li> > </ul> > > <h2>Bug fixes</h2> > > <ul> > <li>TBD</li> > </ul> > > <h2>Changes</h2> > diff --git a/src/compiler/glsl/builtin_functions.cpp > b/src/compiler/glsl/builtin_functions.cpp > index 7119903795f..e37d96c4636 100644 > --- a/src/compiler/glsl/builtin_functions.cpp > +++ b/src/compiler/glsl/builtin_functions.cpp > @@ -522,21 +522,22 @@ supports_arb_fragment_shader_interlock(const > _mesa_glsl_parse_state *state) > static bool > shader_clock(const _mesa_glsl_parse_state *state) > { > return state->ARB_shader_clock_enable; > } > > static bool > shader_clock_int64(const _mesa_glsl_parse_state *state) > { > return state->ARB_shader_clock_enable && > - state->ARB_gpu_shader_int64_enable; > + (state->ARB_gpu_shader_int64_enable || > + state->AMD_gpu_shader_int64_enable); > } > > static bool > shader_storage_buffer_object(const _mesa_glsl_parse_state *state) > { > return state->has_shader_storage_buffer_objects(); > } > > static bool > shader_trinary_minmax(const _mesa_glsl_parse_state *state) > diff --git a/src/compiler/glsl/builtin_types.cpp > b/src/compiler/glsl/builtin_types.cpp > index 7a01cb48bc8..d2bcdd68138 100644 > --- a/src/compiler/glsl/builtin_types.cpp > +++ b/src/compiler/glsl/builtin_types.cpp > @@ -404,21 +404,22 @@ _mesa_glsl_initialize_types(struct > _mesa_glsl_parse_state *state) > add_type(symbols, glsl_type::dmat3_type); > add_type(symbols, glsl_type::dmat4_type); > add_type(symbols, glsl_type::dmat2x3_type); > add_type(symbols, glsl_type::dmat2x4_type); > add_type(symbols, glsl_type::dmat3x2_type); > add_type(symbols, glsl_type::dmat3x4_type); > add_type(symbols, glsl_type::dmat4x2_type); > add_type(symbols, glsl_type::dmat4x3_type); > } > > - if (state->ARB_gpu_shader_int64_enable) { > + if (state->ARB_gpu_shader_int64_enable || > + state->AMD_gpu_shader_int64_enable) { > add_type(symbols, glsl_type::int64_t_type); > add_type(symbols, glsl_type::i64vec2_type); > add_type(symbols, glsl_type::i64vec3_type); > add_type(symbols, glsl_type::i64vec4_type); > > add_type(symbols, glsl_type::uint64_t_type); > add_type(symbols, glsl_type::u64vec2_type); > add_type(symbols, glsl_type::u64vec3_type); > add_type(symbols, glsl_type::u64vec4_type); > } > diff --git a/src/compiler/glsl/glsl_lexer.ll b/src/compiler/glsl/glsl_lexer.ll > index 87b64e09c16..74d4acca61f 100644 > --- a/src/compiler/glsl/glsl_lexer.ll > +++ b/src/compiler/glsl/glsl_lexer.ll > @@ -656,29 +656,29 @@ isampler2DRect TYPE(140, 300, 140, 0, > glsl_type::isampler2DRect_type); > usampler2DRect TYPE(140, 300, 140, 0, glsl_type::usampler2DRect_type); > isamplerBuffer TYPE_WITH_ALT(140, 300, 140, 320, > yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, > glsl_type::isamplerBuffer_type); > usamplerBuffer TYPE_WITH_ALT(140, 300, 140, 320, > yyextra->EXT_texture_buffer_enable || yyextra->OES_texture_buffer_enable, > glsl_type::usamplerBuffer_type); > > /* Additional reserved words in GLSL ES 3.00 */ > resource KEYWORD(420, 300, 0, 0, RESOURCE); > sample KEYWORD_WITH_ALT(400, 300, 400, 320, > yyextra->ARB_gpu_shader5_enable || > yyextra->OES_shader_multisample_interpolation_enable, SAMPLE); > subroutine KEYWORD_WITH_ALT(400, 300, 400, 0, > yyextra->ARB_shader_subroutine_enable, SUBROUTINE); > > /* Additional words for ARB_gpu_shader_int64 */ > -int64_t TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable, glsl_type::int64_t_type); > -i64vec2 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable, glsl_type::i64vec2_type); > -i64vec3 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable, glsl_type::i64vec3_type); > -i64vec4 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable, glsl_type::i64vec4_type); > - > -uint64_t TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable, > glsl_type::uint64_t_type); > -u64vec2 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable, glsl_type::u64vec2_type); > -u64vec3 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable, glsl_type::u64vec3_type); > -u64vec4 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable, glsl_type::u64vec4_type); > +int64_t TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, > glsl_type::int64_t_type); > +i64vec2 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, > glsl_type::i64vec2_type); > +i64vec3 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, > glsl_type::i64vec3_type); > +i64vec4 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, > glsl_type::i64vec4_type); > + > +uint64_t TYPE_WITH_ALT(0, 0, 0, 0, yyextra->ARB_gpu_shader_int64_enable > || yyextra->AMD_gpu_shader_int64_enable, glsl_type::uint64_t_type); > +u64vec2 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, > glsl_type::u64vec2_type); > +u64vec3 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, > glsl_type::u64vec3_type); > +u64vec4 TYPE_WITH_ALT(0, 0, 0, 0, > yyextra->ARB_gpu_shader_int64_enable || yyextra->AMD_gpu_shader_int64_enable, > glsl_type::u64vec4_type); > > [_a-zA-Z][_a-zA-Z0-9]* { > struct _mesa_glsl_parse_state *state = yyextra; > if (state->es_shader && yyleng > 1024) { > _mesa_glsl_error(yylloc, state, > "Identifier `%s' exceeds 1024 > characters", > yytext); > } > return classify_identifier(state, yytext, yyleng, > yylval); > } > diff --git a/src/compiler/glsl/glsl_parser_extras.cpp > b/src/compiler/glsl/glsl_parser_extras.cpp > index 6d92f24ea22..a455dde122a 100644 > --- a/src/compiler/glsl/glsl_parser_extras.cpp > +++ b/src/compiler/glsl/glsl_parser_extras.cpp > @@ -691,20 +691,21 @@ static const _mesa_glsl_extension > _mesa_glsl_supported_extensions[] = { > EXT(OES_tessellation_shader), > EXT(OES_texture_3D), > EXT(OES_texture_buffer), > EXT(OES_texture_cube_map_array), > EXT_AEP(OES_texture_storage_multisample_2d_array), > EXT(OES_viewport_array), > > /* All other extensions go here, sorted alphabetically. > */ > EXT(AMD_conservative_depth), > + EXT(AMD_gpu_shader_int64), > EXT(AMD_shader_stencil_export), > EXT(AMD_shader_trinary_minmax), > EXT(AMD_vertex_shader_layer), > EXT(AMD_vertex_shader_viewport_index), > EXT(ANDROID_extension_pack_es31a), > EXT(EXT_blend_func_extended), > EXT(EXT_frag_depth), > EXT(EXT_draw_buffers), > EXT(EXT_clip_cull_distance), > EXT(EXT_geometry_point_size), > diff --git a/src/compiler/glsl/glsl_parser_extras.h > b/src/compiler/glsl/glsl_parser_extras.h > index 59a173418b7..81792de5704 100644 > --- a/src/compiler/glsl/glsl_parser_extras.h > +++ b/src/compiler/glsl/glsl_parser_extras.h > @@ -249,21 +249,22 @@ struct _mesa_glsl_parse_state { > || EXT_separate_shader_objects_enable; > } > > bool has_double() const > { > return ARB_gpu_shader_fp64_enable || is_version(400, 0); > } > > bool has_int64() const > { > - return ARB_gpu_shader_int64_enable; > + return ARB_gpu_shader_int64_enable || > + AMD_gpu_shader_int64_enable; > } > > bool has_420pack() const > { > return ARB_shading_language_420pack_enable || is_version(420, 0); > } > > bool has_420pack_or_es31() const > { > return ARB_shading_language_420pack_enable || is_version(420, 310); > @@ -751,20 +752,22 @@ struct _mesa_glsl_parse_state { > bool OES_texture_cube_map_array_warn; > bool OES_texture_storage_multisample_2d_array_enable; > bool OES_texture_storage_multisample_2d_array_warn; > bool OES_viewport_array_enable; > bool OES_viewport_array_warn; > > /* All other extensions go here, sorted alphabetically. > */ > bool AMD_conservative_depth_enable; > bool AMD_conservative_depth_warn; > + bool AMD_gpu_shader_int64_enable; > + bool AMD_gpu_shader_int64_warn; > bool AMD_shader_stencil_export_enable; > bool AMD_shader_stencil_export_warn; > bool AMD_shader_trinary_minmax_enable; > bool AMD_shader_trinary_minmax_warn; > bool AMD_vertex_shader_layer_enable; > bool AMD_vertex_shader_layer_warn; > bool AMD_vertex_shader_viewport_index_enable; > bool AMD_vertex_shader_viewport_index_warn; > bool ANDROID_extension_pack_es31a_enable; > bool ANDROID_extension_pack_es31a_warn; > diff --git a/src/mapi/glapi/gen/AMD_gpu_shader_int64.xml > b/src/mapi/glapi/gen/AMD_gpu_shader_int64.xml > new file mode 100644 > index 00000000000..42eb750d110 > --- /dev/null > +++ b/src/mapi/glapi/gen/AMD_gpu_shader_int64.xml > @@ -0,0 +1,239 @@ > +<?xml version="1.0"?> > +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> > + > +<OpenGLAPI> > + > +<category name="GL_AMD_gpu_shader_int64" number="451"> > + > + <function name="Uniform1i64NV" alias="Uniform1i64ARB"> > + <param name="location" type="GLint"/> > + <param name="x" type="GLint64"/> > + </function> > + > + <function name="Uniform2i64NV" alias="Uniform2i64ARB"> > + <param name="location" type="GLint"/> > + <param name="x" type="GLint64"/> > + <param name="y" type="GLint64"/> > + </function> > + > + <function name="Uniform3i64NV" alias="Uniform3i64ARB"> > + <param name="location" type="GLint"/> > + <param name="x" type="GLint64"/> > + <param name="y" type="GLint64"/> > + <param name="z" type="GLint64"/> > + </function> > + > + <function name="Uniform4i64NV" alias="Uniform4i64ARB"> > + <param name="location" type="GLint"/> > + <param name="x" type="GLint64"/> > + <param name="y" type="GLint64"/> > + <param name="z" type="GLint64"/> > + <param name="w" type="GLint64"/> > + </function> > + > + <function name="Uniform1i64vNV" alias="Uniform1i64vARB"> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLint64 *" count="count"/> > + </function> > + > + <function name="Uniform2i64vNV" alias="Uniform2i64vARB"> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLint64 *" count="count" > count_scale="2"/> > + </function> > + > + <function name="Uniform3i64vNV" alias="Uniform3i64vARB"> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLint64 *" count="count" > count_scale="3"/> > + </function> > + > + <function name="Uniform4i64vNV" alias="Uniform4i64vARB"> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLint64 *" count="count" > count_scale="4"/> > + </function> > + > + <function name="Uniform1ui64NV" alias="Uniform1ui64ARB"> > + <param name="location" type="GLint"/> > + <param name="x" type="GLuint64"/> > + </function> > + > + <function name="Uniform2ui64NV" alias="Uniform2ui64ARB"> > + <param name="location" type="GLint"/> > + <param name="x" type="GLuint64"/> > + <param name="y" type="GLuint64"/> > + </function> > + > + <function name="Uniform3ui64NV" alias="Uniform3ui64ARB"> > + <param name="location" type="GLint"/> > + <param name="x" type="GLuint64"/> > + <param name="y" type="GLuint64"/> > + <param name="z" type="GLuint64"/> > + </function> > + > + <function name="Uniform4ui64NV" alias="Uniform4ui64ARB"> > + <param name="location" type="GLint"/> > + <param name="x" type="GLuint64"/> > + <param name="y" type="GLuint64"/> > + <param name="z" type="GLuint64"/> > + <param name="w" type="GLuint64"/> > + </function> > + > + <function name="Uniform1ui64vNV" alias="Uniform1ui64vARB"> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLuint64 *" count="count"/> > + </function> > + > + <function name="Uniform2ui64vNV" alias="Uniform2ui64vARB"> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLuint64 *" count="count" > count_scale="2"/> > + </function> > + > + <function name="Uniform3ui64vNV" alias="Uniform3ui64vARB"> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLuint64 *" count="count" > count_scale="3"/> > + </function> > + > + <function name="Uniform4ui64vNV" alias="Uniform4ui64vARB"> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLuint64 *" count="count" > count_scale="4"/> > + </function> > + > + <function name="GetUniformi64vNV" alias="GetUniformi64vARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="params" type="GLint64 *"/> > + </function> > + > + <function name="GetUniformui64vNV" alias="GetUniformui64vARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="params" type="GLuint64 *"/> > + </function> > + > + <function name="ProgramUniform1i64NV" alias="ProgramUniform1i64ARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="x" type="GLint64"/> > + </function> > + > + <function name="ProgramUniform2i64NV" alias="ProgramUniform2i64ARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="x" type="GLint64"/> > + <param name="y" type="GLint64"/> > + </function> > + > + <function name="ProgramUniform3i64NV" alias="ProgramUniform3i64ARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="x" type="GLint64"/> > + <param name="y" type="GLint64"/> > + <param name="z" type="GLint64"/> > + </function> > + > + <function name="ProgramUniform4i64NV" alias="ProgramUniform4i64ARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="x" type="GLint64"/> > + <param name="y" type="GLint64"/> > + <param name="z" type="GLint64"/> > + <param name="w" type="GLint64"/> > + </function> > + > + <function name="ProgramUniform1i64vNV" alias="ProgramUniform1i64vARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLint64 *" count="count"/> > + </function> > + > + <function name="ProgramUniform2i64vNV" alias="ProgramUniform2i64vARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLint64 *" count="count" > count_scale="2"/> > + </function> > + > + <function name="ProgramUniform3i64vNV" alias="ProgramUniform3i64vARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLint64 *" count="count" > count_scale="3"/> > + </function> > + > + <function name="ProgramUniform4i64vNV" alias="ProgramUniform4i64vARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLint64 *" count="count" > count_scale="4"/> > + </function> > + > + <function name="ProgramUniform1ui64NV" alias="ProgramUniform1ui64ARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="x" type="GLuint64"/> > + </function> > + > + <function name="ProgramUniform2ui64NV" alias="ProgramUniform2ui64ARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="x" type="GLuint64"/> > + <param name="y" type="GLuint64"/> > + </function> > + > + <function name="ProgramUniform3ui64NV" alias="ProgramUniform3ui64ARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="x" type="GLuint64"/> > + <param name="y" type="GLuint64"/> > + <param name="z" type="GLuint64"/> > + </function> > + > + <function name="ProgramUniform4ui64NV" alias="ProgramUniform4ui64ARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="x" type="GLuint64"/> > + <param name="y" type="GLuint64"/> > + <param name="z" type="GLuint64"/> > + <param name="w" type="GLuint64"/> > + </function> > + > + <function name="ProgramUniform1ui64vNV" alias="ProgramUniform1ui64vARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLuint64 *" count="count"/> > + </function> > + > + <function name="ProgramUniform2ui64vNV" alias="ProgramUniform2ui64vARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLuint64 *" count="count" > count_scale="2"/> > + </function> > + > + <function name="ProgramUniform3ui64vNV" alias="ProgramUniform3ui64vARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLuint64 *" count="count" > count_scale="3"/> > + </function> > + > + <function name="ProgramUniform4ui64vNV" alias="ProgramUniform4ui64vARB"> > + <param name="program" type="GLuint"/> > + <param name="location" type="GLint"/> > + <param name="count" type="GLsizei"/> > + <param name="value" type="const GLuint64 *" count="count" > count_scale="4"/> > + </function> > + > +</category> > + > +</OpenGLAPI> > + > diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml > index 95680f1d466..a45fdc5ed98 100644 > --- a/src/mapi/glapi/gen/gl_API.xml > +++ b/src/mapi/glapi/gen/gl_API.xml > @@ -12950,20 +12950,22 @@ > </category> > > <category name="GL_NVX_gpu_memory_info" number="438"> > <enum name="GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX" value="0x9047" > /> > <enum name="GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX" value="0x9048" > /> > <enum name="GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX" value="0x9049" > /> > <enum name="GPU_MEMORY_INFO_EVICTION_COUNT_NVX" value="0x904A" > /> > <enum name="GPU_MEMORY_INFO_EVICTED_MEMORY_NVX" value="0x904B" > /> > </category> > > +<xi:include href="AMD_gpu_shader_int64.xml" > xmlns:xi="http://www.w3.org/2001/XInclude"/> > + > <category name="GL_NV_fill_rectangle" number="466"> > <enum name="FILL_RECTANGLE_NV" value="0x933C"/> > </category> > > <category name="GL_INTEL_conservative_rasterization" number="491"> > <enum name="CONSERVATIVE_RASTERIZATION_INTEL" value="0x83FE"/> > </category> > > <category name="GL_NV_conservative_raster" number="465"> > <enum name="CONSERVATIVE_RASTERIZATION_NV" value="0x9346"> > diff --git a/src/mesa/main/extensions_table.h > b/src/mesa/main/extensions_table.h > index b4c1b203c57..326fa6dc473 100644 > --- a/src/mesa/main/extensions_table.h > +++ b/src/mesa/main/extensions_table.h > @@ -4,20 +4,21 @@ > #define GLC 0 > #define ES1 0 > #define ES2 0 > #define x ~0 > > EXT(3DFX_texture_compression_FXT1 , TDFX_texture_compression_FXT1 > , GLL, GLC, x , x , 1999) > > EXT(AMD_conservative_depth , ARB_conservative_depth > , GLL, GLC, x , x , 2009) > EXT(AMD_draw_buffers_blend , ARB_draw_buffers_blend > , GLL, GLC, x , x , 2009) > EXT(AMD_framebuffer_multisample_advanced , > AMD_framebuffer_multisample_advanced , GLL, GLC, x , ES2, 2018) > +EXT(AMD_gpu_shader_int64 , ARB_gpu_shader_int64 > , x , GLC, x , x , 2015) > EXT(AMD_performance_monitor , AMD_performance_monitor > , GLL, GLC, x , ES2, 2007) > EXT(AMD_pinned_memory , AMD_pinned_memory > , GLL, GLC, x , x , 2013) > EXT(AMD_seamless_cubemap_per_texture , > AMD_seamless_cubemap_per_texture , GLL, GLC, x , x , 2009) > EXT(AMD_shader_stencil_export , ARB_shader_stencil_export > , GLL, GLC, x , x , 2009) > EXT(AMD_shader_trinary_minmax , dummy_true > , GLL, GLC, x , x , 2012) > EXT(AMD_vertex_shader_layer , AMD_vertex_shader_layer > , GLL, GLC, x , x , 2012) > EXT(AMD_vertex_shader_viewport_index , > AMD_vertex_shader_viewport_index , GLL, GLC, x , x , 2012) > > EXT(ANDROID_extension_pack_es31a , ANDROID_extension_pack_es31a > , x , x , x , 31, 2014) > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev