<div dir="ltr">On 2 January 2014 03:58, Tapani Pälli <span dir="ltr"><<a href="mailto:tapani.palli@intel.com" target="_blank">tapani.palli@intel.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi;<br>
<br>
Here's another take on the get_program_binary extension. I've rewritten big<br>
chunks of it based on Paul's review and comments earlier. Here's a brief list<br>
out of my head of things changed:<br>
<br>
- uses mesa compilation time as verification method for cache, not git sha<br>
- much smaller serialization code size, now as part of IR classes<br>
- smaller binary blob size<br>
- does not dump separate 'prototypes block' for functions but instead<br>
 deserialization iterates over the whole blob for functions first<br>
- hashtables written faster than previously (iterated only once)<br>
- no 'unique_id' for ir_variables but using the address as identifier<br>
- patch set broken down to more individual patches/changes<br>
<br>
Mesa branch with these patches applied on top:<br>
<a href="http://cgit.freedesktop.org/~tpalli/mesa/log/?h=oes_get_program_binary" target="_blank">http://cgit.freedesktop.org/~tpalli/mesa/log/?h=oes_get_program_binary</a><br>
<br>
I have plans for the addition of driver backend data but I was hoping this to<br>
be as a separate addition on top. Basically I extend gl_shader_program struct<br>
and offer API for drivers to dump their binary data there, some proto here:<br>
<br>
<a href="http://cgit.freedesktop.org/~tpalli/mesa/log/?h=driver_interface" target="_blank">http://cgit.freedesktop.org/~tpalli/mesa/log/?h=driver_interface</a><br>
(in order to work more data needed like the keys but this is just test)<br>
<br>
I have also 'automatic' cache implementation here that can be used to verify<br>
the cache functionality with any application (without extension):<br>
<a href="http://cgit.freedesktop.org/~tpalli/mesa/log/?h=new_serialization" target="_blank">http://cgit.freedesktop.org/~tpalli/mesa/log/?h=new_serialization</a><br>
<br>
Any comments appreciated;<br>
<br>
Tapani Pälli (9):<br>
  glsl: memory_writer helper class for data serialization<br>
  glsl: serialize methods for IR instructions<br>
  glsl: memory_map helper class for data deserialization<br>
  glsl: add MESA_SHADER_CACHE_MAGIC string for shader binary cache<br>
  glsl: export populate_symbol_table function<br>
  glsl: ir_deserializer class for the binary shader cache<br>
  mesa: iterate method for string_to_uint_map<br>
  glsl: functions to serialize gl_shader and gl_shader_program<br>
  mesa: OES_get_program_binary extension functionality<br></blockquote><div><br></div><div>I sent comments on all patches but 4, 5, and 7.  Those patches are:<br><br>Reviewed-by: Paul Berry <<a href="mailto:stereotype441@gmail.com">stereotype441@gmail.com</a>><br>
<br>I see that you've already responded to some of my comments.  I'm on a business trip this week so I have limited time to answer email, but I'll try to respond to your responses as soon as I can.<br></div></div>
</div></div>