<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>109428</bug_id>
          
          <creation_ts>2013-02-11 06:57:45 -0800</creation_ts>
          <short_desc>[texmap] TextureMapper::draw{Border,RepaintCounter} should reuse textures</short_desc>
          <delta_ts>2013-02-13 19:18:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>107942</dependson>
    
    <dependson>109540</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Bruno Abinader (history only)">bruno.abinader</reporter>
          <assigned_to name="Bruno Abinader (history only)">bruno.abinader</assigned_to>
          <cc>dongseong.hwang</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>noam</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>829638</commentid>
    <comment_count>0</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-11 06:57:45 -0800</bug_when>
    <thetext>TextureMapper debug visuals-related functions should reuse textures whenever possible, specially when drawing FPS values on-screen (handled in bug 107942).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830505</commentid>
    <comment_count>1</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-11 20:27:54 -0800</bug_when>
    <thetext>I&apos;ve started thinking about a nice approach for this and came with two different ideas:

1. Add a RefPtr&lt;BitmapTextureGL&gt; m_fpsTexture to TextureMapperGL which would be updated if the repaint/frame count changes (also including additional info like color, position and transformation matrix). A separate drawFPS() function would be then necessary to differentiate from the repaint count texture.

2. FPS counter could be handled on its own compositing layer, so it could could paint itself into a separate backing surface to avoid unnecessary repaints.

The latter solution sounds less hacky, however might add an unnecessary footprint. The former is easier to implement, but requires an additional BitmapTexture that shall live outside of BitmapTexturePool&apos;s scope. What do you guys think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830520</commentid>
    <comment_count>2</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-11 20:53:51 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; I&apos;ve started thinking about a nice approach for this and came with two different ideas:
&gt; 
&gt; 1. Add a RefPtr&lt;BitmapTextureGL&gt; m_fpsTexture to TextureMapperGL which would be updated if the repaint/frame count changes (also including additional info like color, position and transformation matrix). A separate drawFPS() function would be then necessary to differentiate from the repaint count texture.
&gt; 
&gt; 2. FPS counter could be handled on its own compositing layer, so it could could paint itself into a separate backing surface to avoid unnecessary repaints.
&gt; 
&gt; The latter solution sounds less hacky, however might add an unnecessary footprint. The former is easier to implement, but requires an additional BitmapTexture that shall live outside of BitmapTexturePool&apos;s scope. What do you guys think?

Both idea are good, but I have another idea.

First of all, I&apos;m not sure if we need to optimize drawBorder, which is already fast.

When it comes to drawRepaintCounter (FYI, I tried to rename it to draw Number in Bug 109540), how about using texture atlas (refer to http://code.google.com/p/freetype-gl/).
we need to draw only 1,2,3,4,5,6,7,8,9. So if we pre-build number texture, we can draw number quickly for both: repaint count and fps.

What do you guys think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830956</commentid>
    <comment_count>3</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-12 08:04:51 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; Both idea are good, but I have another idea.
&gt; 
&gt; First of all, I&apos;m not sure if we need to optimize drawBorder, which is already fast.
&gt; 
&gt; When it comes to drawRepaintCounter (FYI, I tried to rename it to draw Number in Bug 109540), how about using texture atlas (refer to http://code.google.com/p/freetype-gl/).
&gt; we need to draw only 1,2,3,4,5,6,7,8,9. So if we pre-build number texture, we can draw number quickly for both: repaint count and fps.
&gt; 
&gt; What do you guys think?

Sounds good, better than saving textures each time the value changes. Would clipping the border/number bounding box area out of the render layer tree (i.e. make it an opaque layer in front of all other RenderLayers, so they wouldn&apos;t need to render anything below this) also help?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832651</commentid>
    <comment_count>4</comment_count>
      <attachid>188248</attachid>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-13 18:54:56 -0800</bug_when>
    <thetext>Created attachment 188248
Exploratory patch (TextureMapper::createNumberAtlas)

This patch creates a number atlas GL texture using BitmapTextureGL. Do you guys agree on this approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832659</commentid>
    <comment_count>5</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-13 19:18:53 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=188248) [details]
&gt; Exploratory patch (TextureMapper::createNumberAtlas)
&gt; 
&gt; This patch creates a number atlas GL texture using BitmapTextureGL. Do you guys agree on this approach?

good progress!
you absolutely create number texture but it is not number texture atlas, because we can not get rect of each number on texture unit.
you need to draw each number using TextRun and store the geometry info using your own data structure.
See GraphicsContext::drawBidiText to know TextRun.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188248</attachid>
            <date>2013-02-13 18:54:56 -0800</date>
            <delta_ts>2013-02-13 18:54:56 -0800</delta_ts>
            <desc>Exploratory patch (TextureMapper::createNumberAtlas)</desc>
            <filename>bug-109428-20130213225123.patch</filename>
            <type>text/plain</type>
            <size>4914</size>
            <attacher name="Bruno Abinader (history only)">bruno.abinader</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggMzdmNzE1
NGYxYzY5ZDk4YjRhMjNiMGMwY2Q3NDhlZjVkOWQ3NTkwOC4uNmNkYzEzYmQ5YjM4MTk1YThiNDJh
NTM3ZGY2OWU4ZDdkZDRkY2NmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcApAQCAtMjEsNiArMjEsNyBA
QAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CkBAIC0xMjgsNiArMTI5LDEyIEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4
dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiBzCiAgICAg
cmV0dXJuIHNlbGVjdGVkVGV4dHVyZTsKIH0KIAorUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBU
ZXh0dXJlTWFwcGVyOjphY3F1aXJlTnVtYmVyQXRsYXMoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFJlZlB0cjxCaXRtYXBUZXh0dXJlPigpOworfQorCiBQYXNzT3duUHRy
PFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBwZXI6OmNyZWF0ZShBY2NlbGVyYXRpb25Nb2RlIG1v
ZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gU29mdHdhcmVNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5kZXgg
YWRlYWYzZTcxOGUxMzI1MDM4MjljOTA0ZmMwYTJkMjc1MmM0NjE4Ni4uZmEzMDZmMjI1MjkyNTM5
ZmQ5Y2ZhNWM3NmM5MmNlYWMyZjUwMzBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC0xNTYsNiArMTU2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhY3F1aXJlVGV4
dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gYWNxdWlyZU51bWJlckF0bGFzKCk7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNhY2hlZEN1c3RvbUZpbHRlclByb2dyYW0oQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCAzY2RkYzkz
NjMxMTAzY2U4Nzc3YTQ1MzE4OWZlOGE3OGJiYzgxNjgxLi40ZDU3MWJmYzk0MTRkZGNiNDFiN2U2
NzY4NDdjNGQwNzkyMTU0MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMTE5Miw2ICsx
MTkyLDU0IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckdMOjpjcmVh
dGVUZXh0dXJlKCkKICAgICByZXR1cm4gYWRvcHRSZWYodGV4dHVyZSk7CiB9CiAKK1Bhc3NSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGVOdW1iZXJBdGxhcygpCit7
CisgICAgaW50IHBvaW50U2l6ZSA9IDg7CisgICAgaW50IG51bWJlckNoYXJzID0gMTA7IC8vIDAg
MSAyIDMgNCA1IDYgNyA4IDkuCisjaWYgVVNFKENBSVJPKQorICAgIC8vIGNhaXJvX3RleHRfZXh0
ZW50cygpIHJlcXVpcmVzIGEgY2Fpcm9fdCwgc28gZGltZW5zaW9ucyBuZWVkIHRvIGJlIGd1ZXNz
dGltYXRlZC4KKyAgICBpbnQgd2lkdGggPSBudW1iZXJDaGFycyAqIHBvaW50U2l6ZSAqIDEuMjsK
KyAgICBpbnQgaGVpZ2h0ID0gcG9pbnRTaXplICogMS41OworCisgICAgY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0Iz
Miwgd2lkdGgsIGhlaWdodCk7CisgICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUoc3VyZmFj
ZSk7CisKKyAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMCwgMCwgMCk7CisgICAgY2Fpcm9f
cmVjdGFuZ2xlKGNyLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBjYWlyb19maWxsKGNyKTsK
KworICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiKGNyLCAxLCAxLCAxKTsKKyAgICBjYWlyb19zZWxl
Y3RfZm9udF9mYWNlKGNyLCAiTW9ub3NwYWNlIiwgQ0FJUk9fRk9OVF9TTEFOVF9OT1JNQUwsIENB
SVJPX0ZPTlRfV0VJR0hUX0JPTEQpOworICAgIGNhaXJvX3NldF9mb250X3NpemUoY3IsIHBvaW50
U2l6ZSk7CisgICAgY2Fpcm9fbW92ZV90byhjciwgMiwgcG9pbnRTaXplKTsKKyAgICBjYWlyb19z
aG93X3RleHQoY3IsICIwMTIzNDU2Nzg5Iik7CisKKyAgICBJbnRTaXplIHNpemUod2lkdGgsIGhl
aWdodCk7CisgICAgSW50UmVjdCByZWN0KEludFBvaW50Ojp6ZXJvKCksIHNpemUpOworCisgICAg
UmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBjcmVhdGVUZXh0dXJlKCk7CisgICAgdGV4
dHVyZS0+cmVzZXQoc2l6ZSwgMCk7CisKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBiaXRzID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKTsKKyAgICBpbnQgc3RyaWRlID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOworICAgIHN0YXRpY19jYXN0
PEJpdG1hcFRleHR1cmVHTCo+KHRleHR1cmUuZ2V0KCkpLT51cGRhdGVDb250ZW50c05vU3dpenps
ZShiaXRzLCByZWN0LCBJbnRQb2ludDo6emVybygpLCBzdHJpZGUpOworICAgIGRyYXdUZXh0dXJl
KCp0ZXh0dXJlLCByZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAxLjBmLCAwLCBUZXh0dXJl
TWFwcGVyOjpBbGxFZGdlcyk7CisKKyAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7
CisgICAgY2Fpcm9fZGVzdHJveShjcik7CisKKyAgICByZXR1cm4gdGV4dHVyZS5yZWxlYXNlKCk7
CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKK30KKworUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmFjcXVpcmVOdW1iZXJBdGxhcygpCit7Cisg
ICAgc3RhdGljIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gY3JlYXRlTnVtYmVyQXRs
YXMoKTsKKyAgICByZXR1cm4gdGV4dHVyZTsKK30KKwogUGFzc093blB0cjxUZXh0dXJlTWFwcGVy
PiBUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCkKIHsKICAgICByZXR1
cm4gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCAzZTgw
YTE3ODJlYzE0ODkxZmQ3YmNjYzJlOTkwOTNiOTZkZGRlMzE1Li5mZjFiYzliYzc0ZjNjNDg5ZTJj
Mzk2MDkyMDZmMDRjZGUxZTRiN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC02NSw2ICs2NSw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5kQ2xpcCgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIElu
dFNpemUoMjAwMCwgMjAwMCk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gY3JlYXRlVGV4dHVyZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBhY3F1aXJlTnVtYmVyQXRsYXMoKSBPVkVSUklERTsKKwogICAgIGlubGluZSBH
cmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRleHQzRC5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQpAQCAtMTEyLDYgKzEx
NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBiaW5kRGVmYXVsdFN1cmZhY2UoKTsKICAgICBDbGlw
U3RhY2smIGNsaXBTdGFjaygpOwogICAgIGlubGluZSBUZXh0dXJlTWFwcGVyR0xEYXRhJiBkYXRh
KCkgeyByZXR1cm4gKm1fZGF0YTsgfQorICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gY3Jl
YXRlTnVtYmVyQXRsYXMoKTsKKwogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250
ZXh0M0Q7CiAgICAgVGV4dHVyZU1hcHBlckdMRGF0YSogbV9kYXRhOwogICAgIENsaXBTdGFjayBt
X2NsaXBTdGFjazsK
</data>

          </attachment>
      

    </bug>

</bugzilla>