Expectation is that the VBO should consume Less Power than the Normal Rendering without VBO's .
As Copying the Data onto the GPU is not done Every Frame of Rendering.
1) Created Interleaved Data so that the VVCCNN(x1,y1,z1,,x2,y2,z3,xc1,yc1,xc2,yc2,xn1,yn1,zn1,..) the power consumed same as the data Copied EveryFrame.
2) Create Interleaved Data VCNVCN(x1,y1,z1,xc1,yc1,xn1,yn1,zn1,,x2,y2,z3,xc2,yc2,) Power consumed is more than both VVCCNN & copying frame data every frame.
The Only thing looks is that am not copying the data into 4 byte data, Is there any real impact on power by using VBO ?
What is the best Approach to get the less power and maximum performance .
Thanks in Advance
Using VBOs should give better energy efficiency per frame, as well as faster performance, than using client-side attribute arrays. Interleaved attributes are _usually_ faster but it really depends on how the data is used, spatial ordering of triangles, packing of tris which are back-facing or front-facing, etc - test and measure is often the only way to be sure)
Large client-side vertex attribute buffer upload without using VBOs is often a bottleneck, causing the GPU to go idle, so system _power_ may increase because of an increase in framerate, but the _energy per frame_ should improve. Note that the GPU workload is the same in both cases - the efficiency comes from CPU-side workload reduction.
In terms of why this isn't happening in your system it is really hard to tell - graphics subsystems are complex. Can you post a test case, and let us know how you are measuring power, and what frame rate each test case is hitting on your platform?
Cheers, Pete
Agreed with Pete although I don't think he stresses the impact of the actual layout of data in the VBO enough!! This can have a massive impact on the performance and power efficiency of the rendering. Sparse indexing and large geometric gaps between triangles/verts close together in memory (see Linear-Speed Vertex Cache Optimisation) are a couple of obvious considerations for Mali and other tile-based architectures in order to keep power usage as low, and performance as high as possible.
Hi pete& Chris ,
Thanks for the valueble inputs , i was looking for an approach and Chris had suggested 1 i would check the same and get back
Thanks
I stress again Pete's post above, if you improve the rendering efficiency by using VBOs or further by improving that VBO usage, you will likely see higher frame-rates, and therefore POTENTIALLY higher power draw over the same period of time. It is important to note that you are not measuring like for like in this case, as you could have many more frames rendered in that same time frame, so it is possible you are seeing higher total power drain over a fixed period, but lower power per frame. This is not unusual with such optimizations.
How are you leveling the playing field with regard to frame rate? Ideally you'd be testing with something that's already operating well above VSYNC. For example, the Cube SDK example will operate at ~2200FPS, which is a frame-time of ~0.5ms. Something operating at about 1-2ms per frame is a very good test case for such optimizations as it will in reality be operating at a fixed 60FPS (VSYNC) so provides a stable and fair platform for testing the power impact of optimizations.
Can you tell us more about how you're measuring power? What is the test case?
Hi Chris,
I Understand that we are regulating the FPS , Thanks for your concern on this.
Right now we put the System to sleep wake up and run the app a multimeter to Check the Power Consumption.
> but lower power per frame.
@Chris Just to be picky and avoid confusion it's _energy_ per frame. Power is measure of instantaneous rate of use - anything integrated over time is energy .
> Right now we put the System to sleep wake up and run the app a multimeter to Check the Power Consumption.
Exactly what are you measuring with the multi-meter? The whole board power rail, the GPU power domain power rail?
TBH the power difference in what you are measuring will be small, and power measurement is always a little noisy because it is sensitive to thermal state (hotter gates = more resistance = more power draw), so I would be surprised if VBOs by themselves would make a radical difference, except where they also significantly change the performance of the rendering.
Pete
Yes pete we are measuring the overall power of the CPU not the GPU Alone , as we dont have any tool to Check the GPU power seperately.
as we leave the system to sleep and wakeup all the back Ground Process settle down we see constant reading on the multimeter , we take this as our base Measurement and any reading above this would be noted over a period of time lets say over 1-5 minutes., average the data.
The Main Idea with Which we started the VBO is that if we are not copying the data every frame , the GPU bus would be left alone as the copy data is a costly operation. it surely had increased the Frame Rate by using VBO . But what i really need to do in this excercise is to reduce te power consumption, theoritically there are lot of things supporting the VBO are better but in practical may be there is reduction , it depends on the accuracy of the multimeter we are using too .
subrhmanyam wrote: the GPU bus would be left alone as the copy data is a costly operation.
subrhmanyam wrote:
the GPU bus would be left alone as the copy data is a costly operation.
A couple of points:
I'm sure you're aware of this, but wanted to clarify in case anyone reading this read it the wrong way.
Thanks,
Chris
EDIT: Reworded for clarity