On 11/22/2013 08:05 PM, Francisco Jerez wrote:
Petri Latvala<petri.latv...@intel.com>  writes:

[...]
@@ -325,8 +326,9 @@ public:
      */
     dst_reg output_reg[BRW_VARYING_SLOT_COUNT];
     const char *output_reg_annotation[BRW_VARYING_SLOT_COUNT];
-   int uniform_size[MAX_UNIFORMS];
-   int uniform_vector_size[MAX_UNIFORMS];
+   unsigned uniform_param_count;
+   int* uniform_size;
+   int* uniform_vector_size;
     int uniforms;

All the code around you uses the 'type *identifier' convention, please
keep it consistent.

*slap on forehead* note to self, disable muscle memory. Fixing that.

     src_reg shader_start_time;
[...]
@@ -556,7 +558,7 @@ brw_gs_emit(struct brw_context *brw,
     if (likely(!(INTEL_DEBUG&  DEBUG_NO_DUAL_OBJECT_GS))) {
        c->prog_data.dual_instanced_dispatch = false;

-      vec4_gs_visitor v(brw, c, prog, shader, mem_ctx, true /* no_spills */);
+      vec4_gs_visitor v(brw, c, prog, shader, mem_ctx, true /* no_spills */, 
param_count);
Another possibility would be to set 'c.prog_data.base.nr_params =
param_count' here and in brw_vs_emit(), so you'd have the same value
available from the constructor of vec4_visitor without all the parameter
changes.

When trying this change, I began to wonder if I'm using the right values at all. What is that nr_params supposed to be for code elsewhere? vec4_visitor::setup_uniforms() sets it to this->uniforms * 4, but param_count that I passed from do_vs_prog() to brw_vs_emit() is num_uniform_components * 4, yielding (close to) this->uniforms * 4 * 4. Close to means that my test program gives param_count being 92, and this->uniforms * 4 in setup_uniforms() is 24.

Is vec4_visitor::setup_uniforms() supposed to be the authoritative source of the uniform counts or is that nr_params assignment just for the pre-gen6 hack in the same function? Is nr_params supposed to be the number of uniform components or uniforms? To my understanding param_count in do_vs_prog() is the number of uniform components required to hold all uniforms with a vec4 for each one (float or otherwise), are the floats packed to vec4s anywhere?


--
Petri Latvala

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to