intel/dev: Add devinfo genx10 field
authorJordan Justen <jordan.l.justen@intel.com>
Sat, 27 Feb 2021 23:09:56 +0000 (15:09 -0800)
committerJordan Justen <jordan.l.justen@intel.com>
Tue, 2 Mar 2021 06:00:08 +0000 (22:00 -0800)
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9329>

src/gallium/drivers/iris/iris_state.c
src/intel/dev/gen_device_info.c
src/intel/dev/gen_device_info.h
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_genX.h
src/intel/vulkan/genX_state.c
src/mesa/drivers/dri/i965/genX_state_upload.c

index 11b9c39..7359fda 100644 (file)
@@ -7974,6 +7974,7 @@ iris_set_frontend_noop(struct pipe_context *ctx, bool enable)
 void
 genX(init_screen_state)(struct iris_screen *screen)
 {
+   assert(screen->devinfo.genx10 == GEN_VERSIONx10);
    screen->vtbl.destroy_state = iris_destroy_state;
    screen->vtbl.init_render_context = iris_init_render_context;
    screen->vtbl.init_compute_context = iris_init_compute_context;
index 5769c6c..9b54e1b 100644 (file)
@@ -106,6 +106,7 @@ static const struct gen_device_info gen_device_info_i965 = {
 
 static const struct gen_device_info gen_device_info_g4x = {
    .gen = 4,
+   .genx10 = 45,
    .has_pln = true,
    .has_compr4 = true,
    .has_surface_tile_offset = true,
@@ -300,6 +301,7 @@ static const struct gen_device_info gen_device_info_byt = {
 #define HSW_FEATURES             \
    GEN7_FEATURES,                \
    .is_haswell = true,           \
+   .genx10 = 75,                 \
    .supports_simd16_3src = true, \
    .has_resource_streamer = true
 
@@ -1424,6 +1426,9 @@ gen_get_device_info_from_fd(int fd, struct gen_device_info *devinfo)
       return false;
    }
 
+   if (devinfo->genx10 == 0)
+      devinfo->genx10 = devinfo->gen * 10;
+
    /* remaining initializion queries the kernel for device info */
    if (devinfo->no_hw)
       return true;
index 166539c..525d4b7 100644 (file)
@@ -47,6 +47,8 @@ struct drm_i915_query_topology_info;
 struct gen_device_info
 {
    int gen; /**< Generation number: 4, 5, 6, 7, ... */
+   /* Driver internal number used to differentiate platforms. */
+   int genx10;
    int revision;
    int gt;
 
index c3cab99..bbf5147 100644 (file)
@@ -871,6 +871,8 @@ anv_physical_device_try_create(struct anv_instance *instance,
 
    device->local_fd = fd;
 
+   anv_genX(&device->info, init_physical_device_state)(device);
+
    *device_out = device;
 
    return VK_SUCCESS;
index 9893727..2b3e1e0 100644 (file)
@@ -46,6 +46,8 @@ extern const uint32_t genX(vk_to_gen_compare_op)[];
 
 extern const uint32_t genX(vk_to_gen_stencil_op)[];
 
+void genX(init_physical_device_state)(struct anv_physical_device *device);
+
 VkResult genX(init_device_state)(struct anv_device *device);
 
 void genX(cmd_buffer_emit_state_base_address)(struct anv_cmd_buffer *cmd_buffer);
index b6e984d..20dde23 100644 (file)
@@ -352,6 +352,12 @@ init_render_queue_state(struct anv_queue *queue)
    return anv_queue_submit_simple_batch(queue, &batch);
 }
 
+void
+genX(init_physical_device_state)(ASSERTED struct anv_physical_device *device)
+{
+   assert(device->info.genx10 == GEN_VERSIONx10);
+}
+
 VkResult
 genX(init_device_state)(struct anv_device *device)
 {
index 4668e36..3f34391 100644 (file)
@@ -5923,4 +5923,6 @@ genX(init_atoms)(struct brw_context *brw)
    brw->vtbl.emit_mi_report_perf_count = genX(emit_mi_report_perf_count);
    brw->vtbl.emit_compute_walker = genX(emit_gpgpu_walker);
 #endif
+
+   assert(brw->screen->devinfo.genx10 == GEN_VERSIONx10);
 }