[Mesa-dev] [PATCH] program: add no-op add_uniform_to_shader::set_buffer_offset() method

Jose Fonseca jfonseca at vmware.com
Sat Mar 5 21:01:14 UTC 2016


On 05/03/16 17:40, Brian Paul wrote:
> Fixes VMware MSVC, MinGW builds:
>
> build/windows-x86-debug/mesa/libmesa.a(ir_to_mesa.o):
> ir_to_mesa.cpp:(.rdata+0xf9c): undefined reference to
> `program_resource_visitor::set_buffer_offset(unsigned int)'
>
> This doesn't seem to be needed for the libgl-gdi target, however.
> ---
>   src/mesa/program/ir_to_mesa.cpp | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
> index 10d931c..d9338e0 100644
> --- a/src/mesa/program/ir_to_mesa.cpp
> +++ b/src/mesa/program/ir_to_mesa.cpp
> @@ -2318,6 +2318,10 @@ public:
>      }
>
>   private:
> +   virtual void set_buffer_offset(unsigned offset)
> +   {
> +   }
> +
>      virtual void visit_field(const glsl_type *type, const char *name,
>                               bool row_major);
>
>

program_resource_visitor::set_buffer_offset is not pure virtual.   There 
shouldn't be a need to implement it on derived classes.  The 
program_resource_visitor::set_buffer_offset implementation from 
src/compiler/glsl/link_uniforms.cpp should normally be picked up.

So, somehow link_uniforms.cpp 's symbol is being picked up when building 
libgl-gdi target, but not when building the failing targets.

Usually I'd say link order is the cause of this sort of issues.

But the odd thing is that MSVC is failing too, and unlike GCC's, MSVC's 
linker usually is not sensitive to build order.  So the problem might be 
more subtle...

Still it's probably worth checking if tweaking the build order helps in 
anyway.


Jose


More information about the mesa-dev mailing list