[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