[Mesa-dev] [PATCH 24/32] i965/vec4: Add register classes up to MAX_VGRF_SIZE.

Francisco Jerez currojerez at riseup.net
Fri Feb 6 06:43:04 PST 2015


In preparation for some send from GRF instructions that will require
larger payloads.
---
 src/mesa/drivers/dri/i965/brw_fs.h                  |  3 ---
 src/mesa/drivers/dri/i965/brw_shader.h              |  3 +++
 src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp | 10 ++++++----
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index ccd3da7..21f648e 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -52,9 +52,6 @@ extern "C" {
 #include "glsl/nir/nir.h"
 #include "program/sampler.h"
 
-#define MAX_SAMPLER_MESSAGE_SIZE 11
-#define MAX_VGRF_SIZE 16
-
 struct bblock_t;
 namespace {
    struct acp_entry;
diff --git a/src/mesa/drivers/dri/i965/brw_shader.h b/src/mesa/drivers/dri/i965/brw_shader.h
index 281d5ee..4b5c573 100644
--- a/src/mesa/drivers/dri/i965/brw_shader.h
+++ b/src/mesa/drivers/dri/i965/brw_shader.h
@@ -33,6 +33,9 @@
 
 #pragma once
 
+#define MAX_SAMPLER_MESSAGE_SIZE 11
+#define MAX_VGRF_SIZE 16
+
 enum PACKED register_file {
    BAD_FILE,
    GRF,
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp
index b944d45..80735c3 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp
@@ -102,8 +102,11 @@ brw_vec4_alloc_reg_set(struct intel_screen *screen)
     * SEND-from-GRF sources cannot be split, so we also need classes for each
     * potential message length.
     */
-   const int class_count = 2;
-   const int class_sizes[class_count] = {1, 2};
+   const int class_count = MAX_VGRF_SIZE;
+   int class_sizes[MAX_VGRF_SIZE];
+
+   for (int i = 0; i < class_count; i++)
+      class_sizes[i] = i + 1;
 
    /* Compute the total number of registers across all classes. */
    int ra_reg_count = 0;
@@ -194,8 +197,7 @@ vec4_visitor::reg_allocate()
 
    for (unsigned i = 0; i < alloc.count; i++) {
       int size = this->alloc.sizes[i];
-      assert(size >= 1 && size <= 2 &&
-             "Register allocation relies on split_virtual_grfs().");
+      assert(size >= 1 && size <= MAX_VGRF_SIZE);
       ra_set_node_class(g, i, screen->vec4_reg_set.classes[size - 1]);
 
       for (unsigned j = 0; j < i; j++) {
-- 
2.1.3



More information about the mesa-dev mailing list