intel: Disable 64-bit extensions on platforms without 64-bit types
authorMatt Turner <mattst88@gmail.com>
Mon, 11 Dec 2017 21:59:13 +0000 (13:59 -0800)
committerMatt Turner <mattst88@gmail.com>
Wed, 28 Feb 2018 19:15:47 +0000 (11:15 -0800)
Gen11 does not support DF, Q, UQ types in hardware. As a result, we have
to disable some GL extensions until they can be reimplemented.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/intel/common/gen_device_info.c
src/intel/common/gen_device_info.h
src/mesa/drivers/dri/i965/intel_extensions.c

index 11a4480ebf1deef181a61ea1490eb6f6f84c345e..7bed806b369cdbb5f83ad9a38ba1e6ab9c6da988 100644 (file)
@@ -197,6 +197,7 @@ static const struct gen_device_info gen_device_info_snb_gt2 = {
    .must_use_separate_stencil = true,               \
    .has_llc = true,                                 \
    .has_pln = true,                                 \
+   .has_64bit_types = true,                         \
    .has_surface_tile_offset = true,                 \
    .timestamp_frequency = 12500000
 
@@ -381,6 +382,7 @@ static const struct gen_device_info gen_device_info_hsw_gt3 = {
    .has_llc = true,                                 \
    .has_sample_with_hiz = false,                    \
    .has_pln = true,                                 \
+   .has_64bit_types = true,                         \
    .supports_simd16_3src = true,                    \
    .has_surface_tile_offset = true,                 \
    .max_vs_threads = 504,                           \
@@ -815,6 +817,7 @@ static const struct gen_device_info gen_device_info_cnl_5x8 = {
 #define GEN11_FEATURES(_gt, _slices, _subslices, _l3) \
    GEN8_FEATURES,                                     \
    GEN11_HW_INFO,                                     \
+   .has_64bit_types = false,                          \
    .gt = _gt, .num_slices = _slices, .l3_banks = _l3, \
    .num_subslices = _subslices
 
index 3e9c087f58c08d0b9fd64d20115256f021ccdf11..9b635ff178f3be7c3b38f644fbafa2a57ef6143d 100644 (file)
@@ -59,6 +59,7 @@ struct gen_device_info
    bool has_llc;
 
    bool has_pln;
+   bool has_64bit_types;
    bool has_compr4;
    bool has_surface_tile_offset;
    bool supports_simd16_3src;
index 127371c5b832c888fbfb9caf0affd88fb06d68ed..73a6c73f5370cce125aedce182ae61a1c62a6ea4 100644 (file)
@@ -218,7 +218,7 @@ intelInitExtensions(struct gl_context *ctx)
       ctx->Extensions.ARB_derivative_control = true;
       ctx->Extensions.ARB_framebuffer_no_attachments = true;
       ctx->Extensions.ARB_gpu_shader5 = true;
-      ctx->Extensions.ARB_gpu_shader_fp64 = true;
+      ctx->Extensions.ARB_gpu_shader_fp64 = devinfo->has_64bit_types;
       ctx->Extensions.ARB_shader_atomic_counters = true;
       ctx->Extensions.ARB_shader_atomic_counter_ops = true;
       ctx->Extensions.ARB_shader_clock = true;
@@ -230,7 +230,7 @@ intelInitExtensions(struct gl_context *ctx)
       ctx->Extensions.ARB_texture_compression_bptc = true;
       ctx->Extensions.ARB_texture_view = true;
       ctx->Extensions.ARB_shader_storage_buffer_object = true;
-      ctx->Extensions.ARB_vertex_attrib_64bit = true;
+      ctx->Extensions.ARB_vertex_attrib_64bit = devinfo->has_64bit_types;
       ctx->Extensions.EXT_shader_samples_identical = true;
       ctx->Extensions.OES_primitive_bounding_box = true;
       ctx->Extensions.OES_texture_buffer = true;
@@ -280,8 +280,9 @@ intelInitExtensions(struct gl_context *ctx)
    }
 
    if (devinfo->gen >= 8) {
-      ctx->Extensions.ARB_gpu_shader_int64 = true;
-      ctx->Extensions.ARB_shader_ballot = true; /* requires ARB_gpu_shader_int64 */
+      ctx->Extensions.ARB_gpu_shader_int64 = devinfo->has_64bit_types;
+      /* requires ARB_gpu_shader_int64 */
+      ctx->Extensions.ARB_shader_ballot = devinfo->has_64bit_types;
       ctx->Extensions.ARB_ES3_2_compatibility = true;
    }