summaryrefslogtreecommitdiffstats
path: root/src/intel
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2020-01-06 13:09:25 -0800
committerMarge Bot <[email protected]>2020-01-14 23:55:00 +0000
commit3d9a3d0be0c11f46b23459de14e4f2b2c5daaeb0 (patch)
treebe9a9a2c6bd062ef03d2e7a0d02166b97da3a9b9 /src/intel
parentbc4f089d0167dc22fb86c85fbd0fd0fa6f073a85 (diff)
i965: Reuse the new core glsl_count_dword_slots().
The only difference I could see was treating interfaces like structs. Maintain that case. Reviewed-by: Kristian H. Kristensen <[email protected]> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3297> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3297>
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/compiler/brw_fs.cpp53
-rw-r--r--src/intel/compiler/brw_nir.h3
2 files changed, 2 insertions, 54 deletions
diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp
index eaa57e4fe0a..4dabf6c9395 100644
--- a/src/intel/compiler/brw_fs.cpp
+++ b/src/intel/compiler/brw_fs.cpp
@@ -576,57 +576,6 @@ fs_reg::component_size(unsigned width) const
return MAX2(width * stride, 1) * type_sz(type);
}
-extern "C" int
-type_size_scalar(const struct glsl_type *type, bool bindless)
-{
- unsigned int size, i;
-
- switch (type->base_type) {
- case GLSL_TYPE_UINT:
- case GLSL_TYPE_INT:
- case GLSL_TYPE_FLOAT:
- case GLSL_TYPE_BOOL:
- return type->components();
- case GLSL_TYPE_UINT16:
- case GLSL_TYPE_INT16:
- case GLSL_TYPE_FLOAT16:
- return DIV_ROUND_UP(type->components(), 2);
- case GLSL_TYPE_UINT8:
- case GLSL_TYPE_INT8:
- return DIV_ROUND_UP(type->components(), 4);
- case GLSL_TYPE_DOUBLE:
- case GLSL_TYPE_UINT64:
- case GLSL_TYPE_INT64:
- return type->components() * 2;
- case GLSL_TYPE_ARRAY:
- return type_size_scalar(type->fields.array, bindless) * type->length;
- case GLSL_TYPE_STRUCT:
- case GLSL_TYPE_INTERFACE:
- size = 0;
- for (i = 0; i < type->length; i++) {
- size += type_size_scalar(type->fields.structure[i].type, bindless);
- }
- return size;
- case GLSL_TYPE_SAMPLER:
- case GLSL_TYPE_IMAGE:
- if (bindless)
- return type->components() * 2;
- case GLSL_TYPE_ATOMIC_UINT:
- /* Samplers, atomics, and images take up no register space, since
- * they're baked in at link time.
- */
- return 0;
- case GLSL_TYPE_SUBROUTINE:
- return 1;
- case GLSL_TYPE_VOID:
- case GLSL_TYPE_ERROR:
- case GLSL_TYPE_FUNCTION:
- unreachable("not reached");
- }
-
- return 0;
-}
-
/**
* Create a MOV to read the timestamp register.
*/
@@ -1219,7 +1168,7 @@ fs_visitor::vgrf(const glsl_type *const type)
{
int reg_width = dispatch_width / 8;
return fs_reg(VGRF,
- alloc.allocate(type_size_scalar(type, false) * reg_width),
+ alloc.allocate(glsl_count_dword_slots(type, false) * reg_width),
brw_type_for_base_type(type));
}
diff --git a/src/intel/compiler/brw_nir.h b/src/intel/compiler/brw_nir.h
index 556648e6f72..7c7f1ea11b7 100644
--- a/src/intel/compiler/brw_nir.h
+++ b/src/intel/compiler/brw_nir.h
@@ -32,14 +32,13 @@
extern "C" {
#endif
-int type_size_scalar(const struct glsl_type *type, bool bindless);
int type_size_vec4(const struct glsl_type *type, bool bindless);
int type_size_dvec4(const struct glsl_type *type, bool bindless);
static inline int
type_size_scalar_bytes(const struct glsl_type *type, bool bindless)
{
- return type_size_scalar(type, bindless) * 4;
+ return glsl_count_dword_slots(type, bindless) * 4;
}
static inline int