[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*To*: Florian Bösch <pyalot@gmail.com>*Subject*: Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux*From*: Gregg Tavares (社用) <gman@google.com>*Date*: Mon, 1 Oct 2012 17:27:21 -0700*Cc*: Vladimir Vukicevic <vladimir@mozilla.com>, Benoit Jacob <bjacob@mozilla.com>, public webgl <public_webgl@khronos.org>*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record; bh=CS5ezjQXVr6jTWEkAvvoUZ4j7z1XfyE7pbvrbnsCcIc=; b=EuTu0v1ZwGAA/w/lwV09PaLG7h1ww6g0kUH4g5WAyVmoMdxXxRBZStOoJVytznInYU p+JXs8J6NVWb5EXyYihXHSTxMH1G0JKwEY4ieACSJVJlsU5ldDEwM80ROiuPm+FufMpP JwaPoD8QiRiE17wSG9DnEWb7+i9ykgV7KSwR63Cu4OJLbRhq9oK4APUTVxWpD1L4ktM8 gXHPp/LTGwg9bFNaK8yuAwfFw3LUOvt4DJ4mzptMkeC9GIMhraIhEicj/J6+yuK3LBK8 zI/GNfLSFzZ3F4zE/LecutcbzxXHfz8fpI+sutF8oZtBupk2iwkyle555pBZKnNS16ND LtOQ==*In-reply-to*: <CAOK8ODg888_Ykdh934T1rwk_AOM4tbzQMfCoyhS3s_am08sHnQ@mail.gmail.com>*List-archive*: <https://www.khronos.org/webgl/public-mailing-list/archives/>*List-id*: Public COLLADA Mailing List <public_webgl.khronos.org>*List-owner*: <mailto:owner-public_webgl@khronos.org>*List-post*: <mailto:public_webgl@khronos.org>*List-subscribe*: <mailto:majordomo@khronos.org?body=subscribe%20public_webgl>*List-unsubscribe*: <mailto:majordomo@khronos.org?body=unsubscribe%20public_webgl>*References*: <50635854.9020306@mozilla.com> <915809960.868631.1348754727917.JavaMail.root@mozilla.com> <CAKZ+BNqgZ_rEtbxqPv4hrwpfZf-q=99xj7yg4Wyw4J2hqJRBbw@mail.gmail.com> <CAOK8ODiPSznPe67nfXbLCRtAM76y71bxAY0LKBCFDhMUqaFmzw@mail.gmail.com> <CAKZ+BNojszwvjSTyLtqX-fNtjSn3ScSHPmxSTYvN-YL-WPHv_Q@mail.gmail.com> <CAOK8ODg888_Ykdh934T1rwk_AOM4tbzQMfCoyhS3s_am08sHnQ@mail.gmail.com>*Sender*: owner-public_webgl@khronos.org

On Mon, Oct 1, 2012 at 5:05 PM, Florian Bösch <pyalot@gmail.com> wrote:

On Tue, Oct 2, 2012 at 12:22 AM, Gregg Tavares (社用) <gman@google.com> wrote:Actually I don't know what each person's goals are.My goal was to provide a harness to be able to find out how much stuff you can draw at 60fps using different techniques. Tests that stall the pipeline with calls to gl.finish will not do that. This is especially true in Chrome with its multi process architecture were WebGL is just generating commands that end up getting executed in parallel in another process. Calling gl.finish stalls both processes and removes all the parallelism.Well unless you call a stalling function (such as finish, texImage2D, bufferData, readPixels, compileShader, linkProgram, uniform**[v]) it doesn't much matter that it's off process. The driver itself won't stall on other calls (at least in theory). And data delivered as in those stalling calls will stall the other process anyway, since it's got to finish reading the bits before it can let the sending process continue lest that process deletes or modifies the stuff in flight (actually map buffers would be really nice, but then we're getting into fence territory and dragons live there). Anyways, if you emit no stalling calls whatsoever the rendering queue would just fill up and you'd be none the wiser at 60fps, so the browser has to finish it eventually, that'll be when the browsers GL context performs a buffer swap at the very latest (assuming an accelerated compositor). So what you can do without gl.finish() is pretty much the same that you can do with gl.finish(), but if you don't call gl.finish() you might be free (to some degree or other) to do other stuff while the GPU and GPU process churns over the rendering. So gl.finish() is actually a fairly good way to measure how long stuff takes. Of course it's not a terribly performant way to do things because while you wait to see how long stuff takes, you could do other stuff, but you get the drift.

I'm not sure I follow what you're trying to explain. If I have 1 core I get this

1:[S][LONG][S][LONG][S][LONG][S][LONG][S][LONG][S][LONG]

On 2 cores I get this

1:[S][S][S][S][S][S]

2:[LONG][LONG][LONG][LONG][LONG][LONG]

In the example above I'm doing 6 short [S] and 6 long [LONG] operations where I made their size represent the time they take to execute.

With 2 processes I can execute 4 more operations, 10 total in the same amount of time 1 core took to process 6 opretations.

1:[S][S][S][S][S][S][S][S][S][S]

2:[LONG][LONG][LONG][LONG][LONG][LONG][LONG][LONG][LONG]

That assumes I'm not GPU bound but if I'm GPU bound the only thing that matters is the GPU.

**Follow-Ups**:**Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux***From:*Florian Bösch <pyalot@gmail.com>

**Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux***From:*Nat Duca <nduca@google.com>

**References**:**Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux***From:*Gregg Tavares (社用) <gman@google.com>

**Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux***From:*Florian Bösch <pyalot@gmail.com>

**Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux***From:*Gregg Tavares (社用) <gman@google.com>

**Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux***From:*Florian Bösch <pyalot@gmail.com>

- Prev by Date:
**Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux** - Next by Date:
**Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux** - Previous by thread:
**Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux** - Next by thread:
**Re: [Public WebGL] WebGL perf regression tests moved to GitHub; design still in flux** - Index(es):