<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div>&gt; &gt;&gt; width, height parameter of glTexImage2D() includes: texture image<br>
&gt; &gt;&gt; width + 2 * border (if any). So when doing the texture size check<br>
&gt; &gt;&gt; in _mesa_test_proxy_teximage() width and height should not exceed<br>
&gt; &gt;&gt; maximum supported size for target texture type.<br>
&gt; &gt;&gt; i.e. 1&lt;&lt;  (ctx-&gt;Const.MaxTextureLevels - 1)<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; This patch fixes Intel oglconform test case: max_values<br>
&gt; &gt;&gt; Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=44970" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=44970</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Note: This is a candidate for mesa 8.0 branch.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Signed-off-by: Anuj Phogat&lt;<a href="mailto:anuj.phogat@gmail.com" target="_blank">anuj.phogat@gmail.com</a>&gt;<br>
&gt; &gt;&gt; ---<br>
&gt; &gt;&gt;   src/mesa/main/teximage.c |   22 +++++++++++-----------<br>
&gt; &gt;&gt;   1 files changed, 11 insertions(+), 11 deletions(-)<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c<br>
&gt; &gt;&gt; index d11425d..018aca0 100644<br>
&gt; &gt;&gt; --- a/src/mesa/main/teximage.c<br>
&gt; &gt;&gt; +++ b/src/mesa/main/teximage.c<br>
&gt; &gt;&gt; @@ -1179,7 +1179,7 @@ _mesa_test_proxy_teximage(struct gl_context<br>
&gt; &gt;&gt; *ctx, GLenum target, GLint level,<br>
&gt; &gt;&gt;      switch (target) {<br>
&gt; &gt;&gt;      case GL_PROXY_TEXTURE_1D:<br>
&gt; &gt;&gt;         maxSize = 1&lt;&lt;  (ctx-&gt;Const.MaxTextureLevels - 1);<br>
&gt; &gt;&gt; -      if (width&lt;  2 * border || width&gt;  2 + maxSize)<br>
&gt; &gt;&gt; +      if (width&lt;  2 * border || width&gt;  maxSize)<br>
&gt; &gt;<br>
&gt; &gt; Anuj,<br>
&gt; &gt;<br>
&gt; &gt; I may be missing something, but I&#39;m still unsure about this,<br>
&gt; &gt; because this will create problems for drivers that do support<br>
&gt; &gt; borders.<br>
&gt;<br>
&gt; AFAIK, the only desktop graphics hardware that ever supported borders<br>
&gt; is<br>
&gt; NVIDIA.  Their driver follows the convention (width + 2 * border) &lt;<br>
&gt; maxSize, and their driver advertises a maximum size of 2^n.  I tried<br>
&gt; creating a proxy texture that was the full 2^n plus a border on their<br>
&gt; closed-source Linux driver, and it was rejected.  A proxy texture<br>
&gt; 2^n-2<br>
&gt; plus a border was accepted.<br>
&gt;<br>
&gt; Based on that, I believe this patch is correct.<br>
<br>
</div></div>Fair enough. Sounds good to me then!</blockquote><div><br></div></div></div><div style="margin-bottom:2em"><pre style="white-space:pre-wrap;width:50em"><font face="&#39;arial narrow&#39;, sans-serif">patch in commit </font><span style><font face="&#39;arial narrow&#39;, sans-serif">15986d21ebaaeedb234b066edba5cf7f6ea87a3c</font></span><span style="font-family:&#39;arial narrow&#39;,sans-serif"> made the intel oglconform test to pass. But the errors reported in </span><span style="font-family:&#39;arial narrow&#39;,sans-serif">oglconform failure stays unfixed. This is confirmed by a piglit test case I developed to reproduce the errors. Test case (validate-texture-size) is posted on piglit mailing list for review.</span></pre>


<pre style="white-space:pre-wrap;width:50em"><font face="&#39;arial narrow&#39;, sans-serif">Driver throws assertion failure or segfaults with large textures even much below the maximum supported size. </font></pre><pre style="width:50em">

<span style="white-space:pre-wrap"><font face="&#39;arial narrow&#39;, sans-serif"><a href="https://bugs.freedesktop.org/show_bug.cgi?id=44970" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=44970</a></font></span></pre>


</div></div></blockquote><div>Further debugging  shows an error while preparing buffer map in  intel_region_map( ) =&gt;</div><div> drm_intel_gem_bo_map_gtt( ) =&gt; drmIoctl() returns -1</div><div>&quot;Error preparing buffer map&quot; </div>


<div>strerror(errno) = 0x4dd6c234</div><div>bo_gem-&gt;gtt_virtual=0x0</div><div>region-&gt;map = 0x0</div><div>dstMap = 0x0 in store_texsubimage()</div><div>which results in error &quot;GL_OUT_OF_MEMORY in glTexSubImage&quot; .</div>


<div><br></div></div>