Path: blob/21.2-virgl/src/etnaviv/drm/tests/etnaviv_cmd_stream_test.c
4570 views
/*1* Copyright (C) 2015 Etnaviv Project2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* the rights to use, copy, modify, merge, publish, distribute, sublicense,7* and/or sell copies of the Software, and to permit persons to whom the8* Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL17* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER18* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,19* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE20* SOFTWARE.21*22* Authors:23* Christian Gmeiner <[email protected]>24*/2526#undef NDEBUG27#include <assert.h>28#include <string.h>29#include <stdio.h>3031#include "drm/etnaviv_drmif.h"3233static void test_avail()34{35struct etna_cmd_stream *stream;3637printf("testing etna_cmd_stream_avail ... ");3839/* invalid size */40stream = etna_cmd_stream_new(NULL, 0, NULL, NULL);41assert(stream == NULL);4243stream = etna_cmd_stream_new(NULL, 4, NULL, NULL);44assert(stream);45assert(etna_cmd_stream_avail(stream) == 2);46etna_cmd_stream_del(stream);4748stream = etna_cmd_stream_new(NULL, 20, NULL, NULL);49assert(stream);50assert(etna_cmd_stream_avail(stream) == 18);51etna_cmd_stream_del(stream);5253/* odd number of 32 bit words */54stream = etna_cmd_stream_new(NULL, 1, NULL, NULL);55assert(stream);56assert(etna_cmd_stream_avail(stream) == 0);57etna_cmd_stream_del(stream);5859stream = etna_cmd_stream_new(NULL, 23, NULL, NULL);60assert(stream);61assert(etna_cmd_stream_avail(stream) == 22);62etna_cmd_stream_del(stream);6364printf("ok\n");65}6667static void test_emit()68{69struct etna_cmd_stream *stream;7071printf("testing etna_cmd_stream_emit ... ");7273stream = etna_cmd_stream_new(NULL, 6, NULL, NULL);74assert(stream);75assert(etna_cmd_stream_avail(stream) == 4);7677etna_cmd_stream_emit(stream, 0x1);78assert(etna_cmd_stream_avail(stream) == 3);7980etna_cmd_stream_emit(stream, 0x2);81assert(etna_cmd_stream_avail(stream) == 2);8283etna_cmd_stream_emit(stream, 0x3);84assert(etna_cmd_stream_avail(stream) == 1);8586etna_cmd_stream_del(stream);8788printf("ok\n");89}9091static void test_offset()92{93struct etna_cmd_stream *stream;9495printf("testing etna_cmd_stream_offset ... ");9697stream = etna_cmd_stream_new(NULL, 6, NULL, NULL);98assert(etna_cmd_stream_offset(stream) == 0);99100etna_cmd_stream_emit(stream, 0x1);101assert(etna_cmd_stream_offset(stream) == 1);102103etna_cmd_stream_emit(stream, 0x2);104assert(etna_cmd_stream_offset(stream) == 2);105106etna_cmd_stream_emit(stream, 0x3);107etna_cmd_stream_emit(stream, 0x4);108assert(etna_cmd_stream_offset(stream) == 4);109110etna_cmd_stream_del(stream);111112printf("ok\n");113}114115int main(int argc, char *argv[])116{117test_avail();118test_emit();119test_offset();120121return 0;122}123124125