From 1b73b15aa21102fb3a684e1218f8964ddcc496f5 Mon Sep 17 00:00:00 2001 From: glevand Date: Fri, 30 Nov 2012 19:32:06 +0000 Subject: [PATCH] implement tile_set and tile_unset --- util.c | 38 +++++++++++++++++++++++++++++++++++--- util.h | 8 +++++++- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/util.c b/util.c index a3d7e00..f6da6e6 100644 --- a/util.c +++ b/util.c @@ -145,10 +145,10 @@ flip(int fd, int context_id, int head, unsigned long offset) return (ioctl(fd, PS3GPU_CTL_FLIP, &flip)); } -uint32_t -get_tiled_pitch_size(uint32_t pitch) +int +get_tiled_pitch_size(int pitch) { - static const uint32_t tile_pitches[] = { + static const int tile_pitches[] = { 0x00000000, 0x00000200, 0x00000300, 0x00000400, 0x00000500, 0x00000600, 0x00000700, 0x00000800, 0x00000a00, 0x00000c00, 0x00000d00, 0x00000e00, @@ -171,6 +171,38 @@ get_tiled_pitch_size(uint32_t pitch) } int +tile_set(int fd, int context_id, int tile_id, int size, int pitch, + int cmp_mode, int bank, int base, unsigned long offset) +{ + struct ps3gpu_ctl_tile_set tile_set; + + tile_set.context_id = context_id; + tile_set.tile_id = tile_id; + tile_set.size = size; + tile_set.pitch = pitch; + tile_set.cmp_mode = cmp_mode; + tile_set.bank = bank; + tile_set.base = base; + tile_set.offset = offset; + + return (ioctl(fd, PS3GPU_CTL_TILE_SET, &tile_set)); +} + +int +tile_unset(int fd, int context_id, int tile_id, int bank, + unsigned long offset) +{ + struct ps3gpu_ctl_tile_unset tile_unset; + + tile_unset.context_id = context_id; + tile_unset.tile_id = tile_id; + tile_unset.bank = bank; + tile_unset.offset = offset; + + return (ioctl(fd, PS3GPU_CTL_TILE_UNSET, &tile_unset)); +} + +int save_image(const char *filename, const char *buf, int len) { FILE *fp; diff --git a/util.h b/util.h index 413ff33..3dfca4a 100644 --- a/util.h +++ b/util.h @@ -171,7 +171,13 @@ int reset_flip_status(int fd, int context_id, int head); int flip(int fd, int context_id, int head, unsigned long offset); -uint32_t get_tiled_pitch_size(uint32_t pitch); +int get_tiled_pitch_size(int pitch); + +int tile_set(int fd, int context_id, int tile_id, int size, int pitch, + int cmp_mode, int bank, int base, unsigned long offset); + +int tile_unset(int fd, int context_id, int tile_id, int bank, + unsigned long offset); /* * How to convert image to JPG format: -- 2.11.4.GIT