So is this an ack? Marek
On Thu, Jan 3, 2019 at 2:41 PM Ian Romanick <i...@freedesktop.org> wrote: > On 1/3/19 11:40 AM, Ian Romanick wrote: > > On 11/28/18 6:59 PM, Marek Olšák wrote: > >> From: Marek Olšák <marek.ol...@amd.com> > >> > >> Tested by piglit. > > > > It doesn't look like there are any piglit test > > Ignore that. I started typing, checked the piglit list, then forgot to > delete it. > > >> --- > >> docs/features.txt | 2 +- > >> docs/relnotes/19.0.0.html | 2 ++ > >> src/mapi/glapi/gen/gl_API.xml | 15 ++++++++++++++- > >> src/mesa/main/dd.h | 7 +++++++ > >> src/mesa/main/extensions_table.h | 2 ++ > >> src/mesa/main/get_hash_params.py | 3 +++ > >> src/mesa/main/hint.c | 12 ++++++++++++ > >> src/mesa/main/hint.h | 4 ++++ > >> src/mesa/main/mtypes.h | 1 + > >> src/mesa/main/shaderapi.c | 10 ++++++++++ > >> src/mesa/main/tests/dispatch_sanity.cpp | 4 ++++ > >> 11 files changed, 60 insertions(+), 2 deletions(-) > >> > >> diff --git a/docs/features.txt b/docs/features.txt > >> index 8999e42519c..7b827de6a92 100644 > >> --- a/docs/features.txt > >> +++ b/docs/features.txt > >> @@ -295,21 +295,21 @@ GLES3.2, GLSL ES 3.2 -- all DONE: i965/gen9+, > radeonsi, virgl > >> GL_OES_texture_storage_multisample_2d_array DONE (all > drivers that support GL_ARB_texture_multisample) > >> > >> Khronos, ARB, and OES extensions that are not part of any OpenGL or > OpenGL ES version: > >> > >> GL_ARB_bindless_texture DONE (nvc0, > radeonsi) > >> GL_ARB_cl_event not started > >> GL_ARB_compute_variable_group_size DONE (nvc0, > radeonsi) > >> GL_ARB_ES3_2_compatibility DONE > (i965/gen8+, radeonsi, virgl) > >> GL_ARB_fragment_shader_interlock DONE (i965) > >> GL_ARB_gpu_shader_int64 DONE > (i965/gen8+, nvc0, radeonsi, softpipe, llvmpipe) > >> - GL_ARB_parallel_shader_compile not started, > but Chia-I Wu did some related work in 2014 > >> + GL_ARB_parallel_shader_compile DONE (all > drivers) > >> GL_ARB_post_depth_coverage DONE (i965, > nvc0) > >> GL_ARB_robustness_isolation not started > >> GL_ARB_sample_locations DONE (nvc0) > >> GL_ARB_seamless_cubemap_per_texture DONE > (freedreno, i965, nvc0, radeonsi, r600, softpipe, swr, virgl) > >> GL_ARB_shader_ballot DONE > (i965/gen8+, nvc0, radeonsi) > >> GL_ARB_shader_clock DONE > (i965/gen7+, nv50, nvc0, r600, radeonsi, virgl) > >> GL_ARB_shader_stencil_export DONE > (i965/gen9+, r600, radeonsi, softpipe, llvmpipe, swr, virgl) > >> GL_ARB_shader_viewport_layer_array DONE > (i965/gen6+, nvc0, radeonsi) > >> GL_ARB_sparse_buffer DONE > (radeonsi/CIK+) > >> GL_ARB_sparse_texture not started > >> diff --git a/docs/relnotes/19.0.0.html b/docs/relnotes/19.0.0.html > >> index bc1776e8f4e..540482bca5f 100644 > >> --- a/docs/relnotes/19.0.0.html > >> +++ b/docs/relnotes/19.0.0.html > >> @@ -33,24 +33,26 @@ Compatibility contexts may report a lower version > depending on each driver. > >> <h2>SHA256 checksums</h2> > >> <pre> > >> TBD. > >> </pre> > >> > >> > >> <h2>New features</h2> > >> > >> <ul> > >> <li>GL_AMD_texture_texture4 on all GL 4.0 drivers.</li> > >> +<li>GL_ARB_parallel_shader_compile on all drivers.</li> > >> <li>GL_EXT_shader_implicit_conversions on all drivers (ES > extension).</li> > >> <li>GL_EXT_texture_compression_bptc on all GL 4.0 drivers (ES > extension).<li> > >> <li>GL_EXT_texture_compression_rgtc on all GL 3.0 drivers (ES > extension).<li> > >> <li>GL_EXT_texture_view on drivers supporting texture views (ES > extension).<li> > >> +<li>GL_KHR_parallel_shader_compile on all drivers.</li> > >> <li>GL_OES_texture_view on drivers supporting texture views (ES > extension).</li> > >> </ul> > >> > >> <h2>Bug fixes</h2> > >> > >> <ul> > >> <li>TBD</li> > >> </ul> > >> > >> <h2>Changes</h2> > >> diff --git a/src/mapi/glapi/gen/gl_API.xml > b/src/mapi/glapi/gen/gl_API.xml > >> index f4d0808f13b..4ce691b361b 100644 > >> --- a/src/mapi/glapi/gen/gl_API.xml > >> +++ b/src/mapi/glapi/gen/gl_API.xml > >> @@ -8402,21 +8402,34 @@ > >> <param name="maxX" type="GLfloat"/> > >> <param name="maxY" type="GLfloat"/> > >> <param name="maxZ" type="GLfloat"/> > >> <param name="maxW" type="GLfloat"/> > >> </function> > >> > >> </category> > >> > >> <xi:include href="ARB_gpu_shader_int64.xml" xmlns:xi=" > http://www.w3.org/2001/XInclude"/> > >> > >> -<!-- ARB extension 179 - 189 --> > >> +<category name="ARB_parallel_shader_compile" number="179"> > >> + <enum name="MAX_SHADER_COMPILER_THREADS_ARB" value="0x91B0"/> > >> + <enum name="COMPLETION_STATUS_ARB" value="0x91B1"/> > >> + > >> + <function name="MaxShaderCompilerThreadsKHR" es2="2.0"> > >> + <param name="count" type="GLuint"/> > >> + </function> > >> + > >> + <function name="MaxShaderCompilerThreadsARB" > alias="MaxShaderCompilerThreadsKHR"> > >> + <param name="count" type="GLuint"/> > >> + </function> > >> +</category> > >> + > >> +<!-- ARB extension 180 - 189 --> > >> > >> <xi:include href="ARB_gl_spirv.xml" xmlns:xi=" > http://www.w3.org/2001/XInclude"/> > >> > >> <!-- Non-ARB extensions sorted by extension number. --> > >> > >> <category name="GL_EXT_blend_color" number="2"> > >> <enum name="CONSTANT_COLOR_EXT" > value="0x8001"/> > >> <enum name="ONE_MINUS_CONSTANT_COLOR_EXT" > value="0x8002"/> > >> <enum name="CONSTANT_ALPHA_EXT" > value="0x8003"/> > >> <enum name="ONE_MINUS_CONSTANT_ALPHA_EXT" > value="0x8004"/> > >> diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h > >> index f14c3e04e91..92b6ecac33c 100644 > >> --- a/src/mesa/main/dd.h > >> +++ b/src/mesa/main/dd.h > >> @@ -1292,20 +1292,27 @@ struct dd_function_table { > >> /** > >> * Called to initialize gl_program::driver_cache_blob (and size) > with a > >> * ralloc allocated buffer. > >> * > >> * This buffer will be saved and restored as part of the gl_program > >> * serialization and deserialization. > >> */ > >> void (*ShaderCacheSerializeDriverBlob)(struct gl_context *ctx, > >> struct gl_program *prog); > >> /*@}*/ > >> + > >> + /** > >> + * \name Set the number of compiler threads for > ARB_parallel_shader_compile > >> + */ > >> + void (*SetMaxShaderCompilerThreads)(struct gl_context *ctx, > unsigned count); > >> + bool (*GetShaderProgramCompletionStatus)(struct gl_context *ctx, > >> + struct gl_shader_program > *shprog); > >> }; > >> > >> > >> /** > >> * Per-vertex functions. > >> * > >> * These are the functions which can appear between glBegin and glEnd. > >> * Depending on whether we're inside or outside a glBegin/End pair > >> * and whether we're in immediate mode or building a display list, > these > >> * functions behave differently. This structure allows us to switch > >> diff --git a/src/mesa/main/extensions_table.h > b/src/mesa/main/extensions_table.h > >> index 2a3e1ab32ca..075d72f16c2 100644 > >> --- a/src/mesa/main/extensions_table.h > >> +++ b/src/mesa/main/extensions_table.h > >> @@ -92,20 +92,21 @@ EXT(ARB_internalformat_query , > ARB_internalformat_query > >> EXT(ARB_internalformat_query2 , > ARB_internalformat_query2 , GLL, GLC, x , x , 2013) > >> EXT(ARB_invalidate_subdata , dummy_true > , GLL, GLC, x , x , 2012) > >> EXT(ARB_map_buffer_alignment , dummy_true > , GLL, GLC, x , x , 2011) > >> EXT(ARB_map_buffer_range , ARB_map_buffer_range > , GLL, GLC, x , x , 2008) > >> EXT(ARB_multi_bind , dummy_true > , GLL, GLC, x , x , 2013) > >> EXT(ARB_multi_draw_indirect , ARB_draw_indirect > , GLL, GLC, x , x , 2012) > >> EXT(ARB_multisample , dummy_true > , GLL, x , x , x , 1994) > >> EXT(ARB_multitexture , dummy_true > , GLL, x , x , x , 1998) > >> EXT(ARB_occlusion_query , ARB_occlusion_query > , GLL, x , x , x , 2001) > >> EXT(ARB_occlusion_query2 , ARB_occlusion_query2 > , GLL, GLC, x , x , 2003) > >> +EXT(ARB_parallel_shader_compile , dummy_true > , GLL, GLC, x , x , 2015) > >> EXT(ARB_pipeline_statistics_query , > ARB_pipeline_statistics_query , GLL, GLC, x , x , 2014) > >> EXT(ARB_pixel_buffer_object , EXT_pixel_buffer_object > , GLL, GLC, x , x , 2004) > >> EXT(ARB_point_parameters , EXT_point_parameters > , GLL, x , x , x , 1997) > >> EXT(ARB_point_sprite , ARB_point_sprite > , GLL, GLC, x , x , 2003) > >> EXT(ARB_polygon_offset_clamp , > ARB_polygon_offset_clamp , GLL, GLC, x , x , 2017) > >> EXT(ARB_post_depth_coverage , ARB_post_depth_coverage > , GLL, GLC, x , x, 2015) > >> EXT(ARB_program_interface_query , dummy_true > , GLL, GLC, x , x , 2012) > >> EXT(ARB_provoking_vertex , EXT_provoking_vertex > , GLL, GLC, x , x , 2009) > >> EXT(ARB_query_buffer_object , ARB_query_buffer_object > , GLL, GLC, x , x , 2013) > >> EXT(ARB_robust_buffer_access_behavior , > ARB_robust_buffer_access_behavior , GLL, GLC, x , x , 2012) > >> @@ -324,20 +325,21 @@ EXT(INGR_blend_func_separate , > EXT_blend_func_separate > >> EXT(INTEL_conservative_rasterization , > INTEL_conservative_rasterization , x , GLC, x , 31, 2013) > >> EXT(INTEL_fragment_shader_ordering , > INTEL_fragment_shader_ordering , GLL, GLC, x , x , 2013) > >> EXT(INTEL_performance_query , INTEL_performance_query > , GLL, GLC, x , ES2, 2013) > >> EXT(INTEL_shader_atomic_float_minmax , > INTEL_shader_atomic_float_minmax , GLL, GLC, x , x , 2018) > >> > >> EXT(KHR_blend_equation_advanced , > KHR_blend_equation_advanced , GLL, GLC, x , ES2, 2014) > >> EXT(KHR_blend_equation_advanced_coherent , > KHR_blend_equation_advanced_coherent , GLL, GLC, x , ES2, 2014) > >> EXT(KHR_context_flush_control , dummy_true > , GLL, GLC, x , ES2, 2014) > >> EXT(KHR_debug , dummy_true > , GLL, GLC, 11, ES2, 2012) > >> EXT(KHR_no_error , dummy_true > , GLL, GLC, ES1, ES2, 2015) > >> +EXT(KHR_parallel_shader_compile , dummy_true > , GLL, GLC, x , ES2, 2017) > >> EXT(KHR_robust_buffer_access_behavior , > ARB_robust_buffer_access_behavior , GLL, GLC, x , ES2, 2014) > >> EXT(KHR_robustness , KHR_robustness > , GLL, GLC, x , ES2, 2012) > >> EXT(KHR_texture_compression_astc_hdr , > KHR_texture_compression_astc_hdr , GLL, GLC, x , ES2, 2012) > >> EXT(KHR_texture_compression_astc_ldr , > KHR_texture_compression_astc_ldr , GLL, GLC, x , ES2, 2012) > >> EXT(KHR_texture_compression_astc_sliced_3d , > KHR_texture_compression_astc_sliced_3d , GLL, GLC, x , ES2, 2015) > >> > >> EXT(MESA_framebuffer_flip_y , MESA_framebuffer_flip_y > , x, x, x , 31, 2018) > >> EXT(MESA_pack_invert , MESA_pack_invert > , GLL, GLC, x , x , 2002) > >> EXT(MESA_shader_integer_functions , > MESA_shader_integer_functions , GLL, GLC, x , 30, 2016) > >> EXT(MESA_texture_signed_rgba , EXT_texture_snorm > , GLL, GLC, x , x , 2009) > >> diff --git a/src/mesa/main/get_hash_params.py > b/src/mesa/main/get_hash_params.py > >> index 0b8ec9ea0bb..579c6e459aa 100644 > >> --- a/src/mesa/main/get_hash_params.py > >> +++ b/src/mesa/main/get_hash_params.py > >> @@ -273,20 +273,23 @@ descriptor=[ > >> [ "PACK_SKIP_ROWS", "CONTEXT_INT(Pack.SkipRows), NO_EXTRA" ], > >> [ "UNPACK_ROW_LENGTH", "CONTEXT_INT(Unpack.RowLength), NO_EXTRA" ], > >> [ "UNPACK_SKIP_PIXELS", "CONTEXT_INT(Unpack.SkipPixels), NO_EXTRA" ], > >> [ "UNPACK_SKIP_ROWS", "CONTEXT_INT(Unpack.SkipRows), NO_EXTRA" ], > >> [ "UNPACK_SKIP_IMAGES", "CONTEXT_INT(Unpack.SkipImages), NO_EXTRA" ], > >> [ "UNPACK_IMAGE_HEIGHT", "CONTEXT_INT(Unpack.ImageHeight), NO_EXTRA" > ], > >> > >> # GL_ARB_draw_buffers > >> [ "MAX_DRAW_BUFFERS_ARB", "CONTEXT_INT(Const.MaxDrawBuffers), > NO_EXTRA" ], > >> > >> +# GL_ARB_parallel_shader_compile > >> + [ "MAX_SHADER_COMPILER_THREADS_ARB", > "CONTEXT_INT(Hint.MaxShaderCompilerThreads), NO_EXTRA" ], > >> + > >> # GL_EXT_framebuffer_object / GL_NV_fbo_color_attachments > >> [ "MAX_COLOR_ATTACHMENTS", "CONTEXT_INT(Const.MaxColorAttachments), > NO_EXTRA" ], > >> > >> # GL_ARB_draw_buffers / GL_NV_draw_buffers (for ES 2.0) > >> [ "DRAW_BUFFER0_ARB", "BUFFER_ENUM16(ColorDrawBuffer[0]), NO_EXTRA" > ], > >> [ "DRAW_BUFFER1_ARB", "BUFFER_ENUM16(ColorDrawBuffer[1]), > extra_valid_draw_buffer" ], > >> [ "DRAW_BUFFER2_ARB", "BUFFER_ENUM16(ColorDrawBuffer[2]), > extra_valid_draw_buffer" ], > >> [ "DRAW_BUFFER3_ARB", "BUFFER_ENUM16(ColorDrawBuffer[3]), > extra_valid_draw_buffer" ], > >> [ "DRAW_BUFFER4_ARB", "BUFFER_ENUM16(ColorDrawBuffer[4]), > extra_valid_draw_buffer" ], > >> [ "DRAW_BUFFER5_ARB", "BUFFER_ENUM16(ColorDrawBuffer[5]), > extra_valid_draw_buffer" ], > >> diff --git a/src/mesa/main/hint.c b/src/mesa/main/hint.c > >> index 5d0c15d35ab..2bcaeebc4aa 100644 > >> --- a/src/mesa/main/hint.c > >> +++ b/src/mesa/main/hint.c > >> @@ -123,27 +123,39 @@ _mesa_Hint( GLenum target, GLenum mode ) > >> default: > >> goto invalid_target; > >> } > >> return; > >> > >> invalid_target: > >> _mesa_error(ctx, GL_INVALID_ENUM, "glHint(target)"); > >> return; > >> } > >> > >> +/* GL_ARB_parallel_shader_compile */ > >> +void GLAPIENTRY > >> +_mesa_MaxShaderCompilerThreadsKHR(GLuint count) > >> +{ > >> + GET_CURRENT_CONTEXT(ctx); > >> + > >> + ctx->Hint.MaxShaderCompilerThreads = count; > >> + > >> + if (ctx->Driver.SetMaxShaderCompilerThreads) > >> + ctx->Driver.SetMaxShaderCompilerThreads(ctx, count); > >> +} > >> > >> > /**********************************************************************/ > >> /***** Initialization > *****/ > >> > /**********************************************************************/ > >> > >> void _mesa_init_hint( struct gl_context * ctx ) > >> { > >> /* Hint group */ > >> ctx->Hint.PerspectiveCorrection = GL_DONT_CARE; > >> ctx->Hint.PointSmooth = GL_DONT_CARE; > >> ctx->Hint.LineSmooth = GL_DONT_CARE; > >> ctx->Hint.PolygonSmooth = GL_DONT_CARE; > >> ctx->Hint.Fog = GL_DONT_CARE; > >> ctx->Hint.TextureCompression = GL_DONT_CARE; > >> ctx->Hint.GenerateMipmap = GL_DONT_CARE; > >> ctx->Hint.FragmentShaderDerivative = GL_DONT_CARE; > >> + ctx->Hint.MaxShaderCompilerThreads = 0xffffffff; > >> } > >> diff --git a/src/mesa/main/hint.h b/src/mesa/main/hint.h > >> index 87febfeecc0..2d7c710af26 100644 > >> --- a/src/mesa/main/hint.h > >> +++ b/src/mesa/main/hint.h > >> @@ -36,14 +36,18 @@ > >> #ifndef HINT_H > >> #define HINT_H > >> > >> #include "glheader.h" > >> > >> struct gl_context; > >> > >> extern void GLAPIENTRY > >> _mesa_Hint( GLenum target, GLenum mode ); > >> > >> +/* GL_KHR_parallel_shader_compile */ > >> +extern void GLAPIENTRY > >> +_mesa_MaxShaderCompilerThreadsKHR(GLuint count); > >> + > >> extern void > >> _mesa_init_hint( struct gl_context * ctx ); > >> > >> #endif > >> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h > >> index 157d45bc0ba..5b2b29d1f5d 100644 > >> --- a/src/mesa/main/mtypes.h > >> +++ b/src/mesa/main/mtypes.h > >> @@ -596,20 +596,21 @@ struct gl_fog_attrib > >> struct gl_hint_attrib > >> { > >> GLenum16 PerspectiveCorrection; > >> GLenum16 PointSmooth; > >> GLenum16 LineSmooth; > >> GLenum16 PolygonSmooth; > >> GLenum16 Fog; > >> GLenum16 TextureCompression; /**< GL_ARB_texture_compression */ > >> GLenum16 GenerateMipmap; /**< GL_SGIS_generate_mipmap */ > >> GLenum16 FragmentShaderDerivative; /**< GL_ARB_fragment_shader */ > >> + GLuint MaxShaderCompilerThreads; /**< > GL_ARB_parallel_shader_compile */ > >> }; > >> > >> > >> /** > >> * Lighting attribute group (GL_LIGHT_BIT). > >> */ > >> struct gl_light_attrib > >> { > >> struct gl_light Light[MAX_LIGHTS]; /**< Array of light > sources */ > >> struct gl_lightmodel Model; /**< Lighting model */ > >> diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c > >> index 2ea8d965aba..01342c04e8f 100644 > >> --- a/src/mesa/main/shaderapi.c > >> +++ b/src/mesa/main/shaderapi.c > >> @@ -682,20 +682,26 @@ get_programiv(struct gl_context *ctx, GLuint > program, GLenum pname, > >> || _mesa_is_gles3(ctx); > >> > >> if (!shProg) { > >> return; > >> } > >> > >> switch (pname) { > >> case GL_DELETE_STATUS: > >> *params = shProg->DeletePending; > >> return; > >> + case GL_COMPLETION_STATUS_ARB: > >> + if (ctx->Driver.GetShaderProgramCompletionStatus) > >> + *params = ctx->Driver.GetShaderProgramCompletionStatus(ctx, > shProg); > >> + else > >> + *params = GL_TRUE; > >> + return; > >> case GL_LINK_STATUS: > >> *params = shProg->data->LinkStatus ? GL_TRUE : GL_FALSE; > >> return; > >> case GL_VALIDATE_STATUS: > >> *params = shProg->data->Validated; > >> return; > >> case GL_INFO_LOG_LENGTH: > >> *params = (shProg->data->InfoLog && shProg->data->InfoLog[0] != > '\0') ? > >> strlen(shProg->data->InfoLog) + 1 : 0; > >> return; > >> @@ -953,20 +959,24 @@ get_shaderiv(struct gl_context *ctx, GLuint name, > GLenum pname, GLint *params) > >> return; > >> } > >> > >> switch (pname) { > >> case GL_SHADER_TYPE: > >> *params = shader->Type; > >> break; > >> case GL_DELETE_STATUS: > >> *params = shader->DeletePending; > >> break; > >> + case GL_COMPLETION_STATUS_ARB: > >> + /* _mesa_glsl_compile_shader is not offloaded to other threads. > */ > >> + *params = GL_TRUE; > >> + return; > > > > So... glComplieShader is completely serial, but glLinkShader can operate > > in parallel? That differs quite a bit from what Chia-I was doing... and > > explains why a lot the threading fixes he had is absent here. Most of > > the expensive work happens in glLinkShader, so this seems reasonable. > > Have you been able to measure this on the start-up time of any real apps? > > > >> case GL_COMPILE_STATUS: > >> *params = shader->CompileStatus ? GL_TRUE : GL_FALSE; > >> break; > >> case GL_INFO_LOG_LENGTH: > >> *params = (shader->InfoLog && shader->InfoLog[0] != '\0') ? > >> strlen(shader->InfoLog) + 1 : 0; > >> break; > >> case GL_SHADER_SOURCE_LENGTH: > >> *params = shader->Source ? strlen((char *) shader->Source) + 1 : > 0; > >> break; > >> diff --git a/src/mesa/main/tests/dispatch_sanity.cpp > b/src/mesa/main/tests/dispatch_sanity.cpp > >> index fb2acfbdeea..6aa6b87882e 100644 > >> --- a/src/mesa/main/tests/dispatch_sanity.cpp > >> +++ b/src/mesa/main/tests/dispatch_sanity.cpp > >> @@ -1191,20 +1191,22 @@ const struct function > common_desktop_functions_possible[] = { > >> { "glEvaluateDepthValuesARB", 30, -1 }, > >> > >> /* GL_ARB_indirect_parameters */ > >> { "glMultiDrawArraysIndirectCountARB", 11, -1 }, > >> { "glMultiDrawElementsIndirectCountARB", 11, -1 }, > >> > >> /* GL_AMD_framebuffer_multisample_advanced */ > >> { "glRenderbufferStorageMultisampleAdvancedAMD", 11, -1 }, > >> { "glNamedRenderbufferStorageMultisampleAdvancedAMD", 11, -1 }, > >> > >> + { "glMaxShaderCompilerThreadsKHR", 11, -1 }, > >> + > >> { NULL, 0, -1 } > >> }; > >> > >> const struct function gl_compatibility_functions_possible[] = { > >> { "glNewList", 10, _gloffset_NewList }, > >> { "glEndList", 10, _gloffset_EndList }, > >> { "glCallList", 10, _gloffset_CallList }, > >> { "glCallLists", 10, _gloffset_CallLists }, > >> { "glDeleteLists", 10, _gloffset_DeleteLists }, > >> { "glGenLists", 10, _gloffset_GenLists }, > >> @@ -2229,20 +2231,22 @@ const struct function > gles2_functions_possible[] = { > >> > >> /* GL_NV_conservative_raster */ > >> { "glSubpixelPrecisionBiasNV", 20, -1 }, > >> > >> /* GL_NV_conservative_raster_dilate */ > >> { "glConservativeRasterParameterfNV", 20, -1 }, > >> > >> /* GL_NV_conservative_raster_pre_snap_triangles */ > >> { "glConservativeRasterParameteriNV", 20, -1 }, > >> > >> + { "glMaxShaderCompilerThreadsKHR", 20, -1 }, > >> + > >> { NULL, 0, -1 } > >> }; > >> > >> const struct function gles3_functions_possible[] = { > >> // We check for the aliased -EXT version in GLES 2 > >> // { "glBeginQuery", 30, -1 }, > >> { "glBeginTransformFeedback", 30, -1 }, > >> { "glBindBufferBase", 30, -1 }, > >> { "glBindBufferRange", 30, -1 }, > >> { "glBindSampler", 30, -1 }, > >> > > > > _______________________________________________ > > mesa-dev mailing list > > mesa-dev@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/mesa-dev > > > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev