~mir-team/mir/development-branch

« back to all changes in this revision

Viewing changes to include/test/mir_test/draw/draw_pattern_checkered-inl.h

  • Committer: Daniel van Vugt
  • Author(s): Kevin DuBois
  • Date: 2013-11-13 02:55:46 UTC
  • mfrom: (1062.1.23 mali-client-render-support)
  • Revision ID: daniel.van.vugt@canonical.com-20131113025546-2u059ffogt5yj2yz
android: support driver hooks for the Mali T604 (present in nexus 10)

The exynos driver needed some function hooks implemented. This change
implements those hooks and gets the TestClientIPCRender test to pass. This
test sends buffers over IPC to a client, and the client then establishes an
egl context, renders to the buffer, and checks the buffer content back on the
server side.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 * Authored by: Kevin DuBois <kevin.dubois@canonical.com>
17
17
 */
18
18
 
 
19
#include "mir/geometry/pixel_format.h"
 
20
namespace geom = mir::geometry;
 
21
 
19
22
template<size_t Rows, size_t Cols>
20
23
DrawPatternCheckered<Rows,Cols>::DrawPatternCheckered(uint32_t (&pattern) [Rows][Cols])
21
24
{
29
32
    if (region.pixel_format != mir_pixel_format_abgr_8888)
30
33
        throw(std::runtime_error("cannot draw region, incorrect format"));
31
34
 
32
 
    uint32_t *pixel = (uint32_t*) region.vaddr;
33
 
    for(int i=0; i< region.width; i++)
 
35
    auto bpp = geom::bytes_per_pixel(geom::PixelFormat::abgr_8888);
 
36
    for(int i=0; i < region.width; i++)
34
37
    {
35
38
        for(int j=0; j<region.height; j++)
36
39
        {
37
40
            int key_row = i % Rows;
38
41
            int key_col = j % Cols;
39
 
            pixel[j*region.stride + i] = color_pattern[key_row][key_col];
 
42
            uint32_t *pixel = reinterpret_cast<uint32_t*>(&region.vaddr[j*region.stride + (i * bpp)]); 
 
43
            *pixel = color_pattern[key_row][key_col];
40
44
        }
41
45
    }
42
46
}
47
51
    if (region.pixel_format != mir_pixel_format_abgr_8888)
48
52
        throw(std::runtime_error("cannot check region, incorrect format"));
49
53
 
50
 
    uint32_t *pixel = (uint32_t*) region.vaddr;
 
54
    auto bpp = geom::bytes_per_pixel(geom::PixelFormat::abgr_8888);
51
55
    for(int i=0; i< region.width; i++)
52
56
    {
53
57
        for(int j=0; j<region.height; j++)
54
58
        {
55
59
            int key_row = i % Rows;
56
60
            int key_col = j % Cols;
57
 
            if (pixel[j*region.stride + i] != color_pattern[key_row][key_col])
 
61
            uint32_t *pixel = reinterpret_cast<uint32_t*>(&region.vaddr[j*region.stride + (i * bpp)]); 
 
62
            if ( *pixel != color_pattern[key_row][key_col] )
58
63
            {
59
64
                return false;
60
65
            }