~mir-team/mir/development-branch

« back to all changes in this revision

Viewing changes to tests/unit-tests/draw/test_draw_patterns.cpp

  • 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:
28
28
{
29
29
protected:
30
30
    DrawPatternsTest()
31
 
     : stride_color(0x77777777)
 
31
     : stride_color(0x77)
32
32
    {}
33
33
 
34
34
    virtual void SetUp()
35
35
    {
36
36
 
37
37
        test_region.pixel_format = mir_pixel_format_abgr_8888;
38
 
        int bytes_pp = 4;
 
38
        bytes_pp = 4;
39
39
        test_region.width  = 100;
40
40
        /* misaligned stride to tease out stride problems */
41
 
        test_region.stride = 102;
 
41
        test_region.stride = (test_region.width * bytes_pp) + 2;
42
42
        test_region.height = 50;
43
43
        auto region_size =
44
44
            sizeof(char) * bytes_pp * test_region.height * test_region.stride;
58
58
 
59
59
    MirGraphicsRegion test_region;
60
60
    uint32_t pattern_colors [2][2];
 
61
    int bytes_pp;
61
62
    std::shared_ptr<char> region;
62
63
private:
63
64
    /* check that no pattern writes or checks the stride region */
64
65
    void write_stride_region()
65
66
    {
66
 
        uint32_t* region = (uint32_t*) test_region.vaddr;
67
 
        for(auto i=0; i < test_region.height; i++)
 
67
        for(auto i = 0; i < test_region.height; i++)
68
68
        {
69
 
            for(auto j=test_region.width; j<test_region.stride; j++)
 
69
            for(auto j = test_region.width * bytes_pp; j < test_region.stride; j++)
70
70
            {
71
 
                region[ (i*test_region.stride) + j ] = stride_color;
 
71
                test_region.vaddr[ (i * test_region.stride) + j ] = stride_color;
72
72
            }
73
73
        }
74
74
    }
75
75
 
76
76
    bool check_stride_region_unaltered()
77
77
    {
78
 
        uint32_t* region = (uint32_t*) test_region.vaddr;
79
78
        for(auto i=0; i < test_region.height; i++)
80
79
        {
81
 
            for(auto j=test_region.width; j<test_region.stride; j++)
 
80
            for(auto j=test_region.width * bytes_pp; j < test_region.stride; j++)
82
81
            {
83
 
                if(region[ ((i*test_region.stride) + j) ] != stride_color)
 
82
                if(test_region.vaddr[ ((i * test_region.stride) + j) ] != stride_color)
84
83
                {
85
84
                    return false;
86
85
                }
89
88
        return true;
90
89
    }
91
90
 
92
 
    const uint32_t stride_color;
 
91
    const char stride_color;
93
92
};
94
93
 
95
94
TEST_F(DrawPatternsTest, solid_color_unaccelerated)