ctx->Extensions.EXT_blend_func_separate = true;
ctx->Extensions.EXT_blend_minmax = true;
ctx->Extensions.EXT_draw_buffers2 = true;
+ ctx->Extensions.EXT_EGL_image_storage = true;
ctx->Extensions.EXT_float_blend = true;
ctx->Extensions.EXT_framebuffer_sRGB = true;
ctx->Extensions.EXT_gpu_program_parameters = true;
ctx->Extensions.EXT_texture_env_dot3 = true;
ctx->Extensions.EXT_texture_filter_anisotropic = true;
ctx->Extensions.EXT_texture_integer = true;
+ ctx->Extensions.EXT_texture_norm16 = true;
ctx->Extensions.EXT_texture_shared_exponent = true;
ctx->Extensions.EXT_texture_snorm = true;
ctx->Extensions.EXT_texture_sRGB = true;
ctx->Extensions.OES_texture_half_float_linear = true;
if (devinfo->gen >= 8)
- ctx->Const.GLSLVersion = 450;
+ ctx->Const.GLSLVersion = 460;
else if (devinfo->is_haswell && can_do_pipelined_register_writes(brw->screen))
ctx->Const.GLSLVersion = 450;
else if (devinfo->gen >= 7 && can_do_pipelined_register_writes(brw->screen))
ctx->Extensions.ARB_texture_gather = true;
ctx->Extensions.ARB_texture_multisample = true;
ctx->Extensions.ARB_uniform_buffer_object = true;
+ ctx->Extensions.EXT_gpu_shader4 = true;
+ ctx->Extensions.EXT_texture_shadow_lod = true;
if (ctx->API != API_OPENGL_COMPAT ||
ctx->Const.AllowHigherCompatVersion)
ctx->Extensions.EXT_shader_samples_identical = true;
ctx->Extensions.OES_primitive_bounding_box = true;
ctx->Extensions.OES_texture_buffer = true;
- ctx->Extensions.ARB_fragment_shader_interlock = true;
if (can_do_pipelined_register_writes(brw->screen)) {
ctx->Extensions.ARB_draw_indirect = true;
ctx->Extensions.ARB_compute_shader = true;
ctx->Extensions.ARB_ES3_1_compatibility =
devinfo->gen >= 8 || devinfo->is_haswell;
+ ctx->Extensions.NV_compute_shader_derivatives = true;
+ ctx->Extensions.ARB_compute_variable_group_size = true;
}
if (can_do_predicate_writes(brw->screen)) {
ctx->Extensions.ARB_indirect_parameters = true;
}
}
+
+ ctx->Extensions.ARB_gl_spirv = true;
+ ctx->Extensions.ARB_spirv_extensions = true;
}
if (devinfo->gen >= 8 || devinfo->is_haswell) {
ctx->Extensions.OES_copy_image = true;
}
+ /* Gen < 6 still uses the blitter. It's somewhat annoying to add support
+ * for blackhole there... Does anybody actually care anymore anyway?
+ */
+ if (devinfo->gen >= 6)
+ ctx->Extensions.INTEL_blackhole_render = true;
+
if (devinfo->gen >= 8) {
ctx->Extensions.ARB_gpu_shader_int64 = true;
/* requires ARB_gpu_shader_int64 */
ctx->Extensions.ARB_shader_ballot = true;
ctx->Extensions.ARB_ES3_2_compatibility = true;
+
+ /* Currently only implemented in the scalar backend, so only enable for
+ * Gen8+. Eventually Gen6+ could be supported.
+ */
+ ctx->Extensions.INTEL_shader_integer_functions2 = true;
}
if (devinfo->gen >= 9) {
ctx->Extensions.KHR_blend_equation_advanced_coherent = true;
ctx->Extensions.KHR_texture_compression_astc_ldr = true;
ctx->Extensions.KHR_texture_compression_astc_sliced_3d = true;
+
+ /*
+ * From the Skylake PRM Vol. 7 (Memory Fence Message, page 221):
+ * "A memory fence message issued by a thread causes further messages
+ * issued by the thread to be blocked until all previous data port
+ * messages have completed, or the results can be globally observed from
+ * the point of view of other threads in the system."
+ *
+ * From the Haswell PRM Vol. 7 (Memory Fence, page 256):
+ * "A memory fence message issued by a thread causes further messages
+ * issued by the thread to be blocked until all previous messages issued
+ * by the thread to that data port (data cache or render cache) have
+ * been globally observed from the point of view of other threads in the
+ * system."
+ *
+ * Summarized: For ARB_fragment_shader_interlock to work, we need to
+ * ensure memory access ordering for all messages to the dataport from
+ * all threads. Memory fence messages prior to SKL only provide memory
+ * access ordering for messages from the same thread, so we can only
+ * support the feature from Gen9 onwards.
+ *
+ */
+
+ ctx->Extensions.ARB_fragment_shader_interlock = true;
}
if (gen_device_info_is_9lp(devinfo))
ctx->Extensions.EXT_texture_compression_s3tc = true;
ctx->Extensions.EXT_texture_compression_s3tc_srgb = true;
ctx->Extensions.ANGLE_texture_compression_dxt = true;
+
+ ctx->Extensions.EXT_demote_to_helper_invocation = true;
}