projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
panfrost: Inline panfrost_get_default_swizzle
[mesa.git]
/
src
/
gallium
/
drivers
/
panfrost
/
pan_assemble.c
diff --git
a/src/gallium/drivers/panfrost/pan_assemble.c
b/src/gallium/drivers/panfrost/pan_assemble.c
index 54c5ba7970099a8be6d12a42ca1387fe21143066..6f84248b2f1fb1ddfd8b5315f550054d9c6cedc2 100644
(file)
--- a/
src/gallium/drivers/panfrost/pan_assemble.c
+++ b/
src/gallium/drivers/panfrost/pan_assemble.c
@@
-27,6
+27,7
@@
#include <string.h>
#include "pan_bo.h"
#include "pan_context.h"
#include <string.h>
#include "pan_bo.h"
#include "pan_context.h"
+#include "pan_format.h"
#include "pan_util.h"
#include "compiler/nir/nir.h"
#include "pan_util.h"
#include "compiler/nir/nir.h"
@@
-96,14
+97,28
@@
panfrost_shader_compile(
meta->midgard1.uniform_count = MIN2(program.uniform_count, program.uniform_cutoff);
meta->midgard1.work_count = program.work_register_count;
meta->midgard1.uniform_count = MIN2(program.uniform_count, program.uniform_cutoff);
meta->midgard1.work_count = program.work_register_count;
+ bool vertex_id = s->info.system_values_read & (1 << SYSTEM_VALUE_VERTEX_ID);
+ bool instance_id = s->info.system_values_read & (1 << SYSTEM_VALUE_INSTANCE_ID);
+
switch (stage) {
case MESA_SHADER_VERTEX:
meta->attribute_count = util_bitcount64(s->info.inputs_read);
meta->varying_count = util_bitcount64(s->info.outputs_written);
switch (stage) {
case MESA_SHADER_VERTEX:
meta->attribute_count = util_bitcount64(s->info.inputs_read);
meta->varying_count = util_bitcount64(s->info.outputs_written);
+
+ if (vertex_id)
+ meta->attribute_count = MAX2(meta->attribute_count, PAN_VERTEX_ID + 1);
+
+ if (instance_id)
+ meta->attribute_count = MAX2(meta->attribute_count, PAN_INSTANCE_ID + 1);
+
break;
case MESA_SHADER_FRAGMENT:
meta->attribute_count = 0;
meta->varying_count = util_bitcount64(s->info.inputs_read);
break;
case MESA_SHADER_FRAGMENT:
meta->attribute_count = 0;
meta->varying_count = util_bitcount64(s->info.inputs_read);
+ if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_DEPTH))
+ state->writes_depth = true;
+ if (s->info.outputs_written & BITFIELD64_BIT(FRAG_RESULT_STENCIL))
+ state->writes_stencil = true;
break;
case MESA_SHADER_COMPUTE:
/* TODO: images */
break;
case MESA_SHADER_COMPUTE:
/* TODO: images */
@@
-126,7
+141,7
@@
panfrost_shader_compile(
/* Separate as primary uniform count is truncated */
state->uniform_count = program.uniform_count;
/* Separate as primary uniform count is truncated */
state->uniform_count = program.uniform_count;
- meta->midgard1.
unknown2
= 8; /* XXX */
+ meta->midgard1.
flags_hi
= 8; /* XXX */
unsigned default_vec1_swizzle = panfrost_get_default_swizzle(1);
unsigned default_vec2_swizzle = panfrost_get_default_swizzle(2);
unsigned default_vec1_swizzle = panfrost_get_default_swizzle(1);
unsigned default_vec2_swizzle = panfrost_get_default_swizzle(2);
@@
-138,7
+153,7
@@
panfrost_shader_compile(
/* Default to a vec4 varying */
struct mali_attr_meta v = {
/* Default to a vec4 varying */
struct mali_attr_meta v = {
- .format =
MALI_RGBA32F
,
+ .format =
program.varying_type[i]
,
.swizzle = default_vec4_swizzle,
.unknown1 = 0x2,
};
.swizzle = default_vec4_swizzle,
.unknown1 = 0x2,
};