mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-17 23:20:33 +01:00
r300g,radeong: set tiling flags in libdrm
This commit is contained in:
parent
8505996430
commit
b7a002df1e
3 changed files with 35 additions and 0 deletions
|
|
@ -30,6 +30,8 @@
|
|||
#include "r300_texture.h"
|
||||
#include "r300_screen.h"
|
||||
|
||||
#include "radeon_winsys.h"
|
||||
|
||||
#define TILE_WIDTH 0
|
||||
#define TILE_HEIGHT 1
|
||||
|
||||
|
|
@ -209,6 +211,7 @@ static struct pipe_texture*
|
|||
{
|
||||
struct r300_texture* tex = CALLOC_STRUCT(r300_texture);
|
||||
struct r300_screen* rscreen = r300_screen(screen);
|
||||
struct radeon_winsys* winsys = (struct radeon_winsys*)screen->winsys;
|
||||
|
||||
if (!tex) {
|
||||
return NULL;
|
||||
|
|
@ -225,6 +228,10 @@ static struct pipe_texture*
|
|||
tex->buffer = screen->buffer_create(screen, 2048,
|
||||
PIPE_BUFFER_USAGE_PIXEL,
|
||||
tex->size);
|
||||
winsys->buffer_set_tiling(winsys, tex->buffer,
|
||||
tex->pitch[0],
|
||||
tex->microtile != R300_BUFFER_LINEAR,
|
||||
tex->macrotile != R300_BUFFER_LINEAR);
|
||||
|
||||
if (!tex->buffer) {
|
||||
FREE(tex);
|
||||
|
|
|
|||
|
|
@ -202,6 +202,26 @@ static void radeon_buffer_unmap(struct pipe_winsys *ws,
|
|||
}
|
||||
}
|
||||
|
||||
static void radeon_buffer_set_tiling(struct radeon_winsys *ws,
|
||||
struct pipe_buffer *buffer,
|
||||
uint32_t pitch,
|
||||
boolean microtiled,
|
||||
boolean macrotiled)
|
||||
{
|
||||
struct radeon_pipe_buffer *radeon_buffer =
|
||||
(struct radeon_pipe_buffer*)buffer;
|
||||
uint32_t flags = 0;
|
||||
|
||||
if (microtiled) {
|
||||
flags |= RADEON_BO_FLAGS_MICRO_TILE;
|
||||
}
|
||||
if (macrotiled) {
|
||||
flags |= RADEON_BO_FLAGS_MACRO_TILE;
|
||||
}
|
||||
|
||||
radeon_bo_set_tiling(radeon_buffer->bo, flags, pitch);
|
||||
}
|
||||
|
||||
static void radeon_fence_reference(struct pipe_winsys *ws,
|
||||
struct pipe_fence_handle **ptr,
|
||||
struct pipe_fence_handle *pfence)
|
||||
|
|
@ -304,5 +324,7 @@ struct radeon_winsys* radeon_pipe_winsys(int fd)
|
|||
|
||||
radeon_ws->base.get_name = radeon_get_name;
|
||||
|
||||
radeon_ws->buffer_set_tiling = radeon_buffer_set_tiling;
|
||||
|
||||
return radeon_ws;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,6 +100,12 @@ struct radeon_winsys {
|
|||
void (*flush_cb)(void *), void *data);
|
||||
|
||||
void (*reset_bos)(struct radeon_winsys *winsys);
|
||||
|
||||
void (*buffer_set_tiling)(struct radeon_winsys* winsys,
|
||||
struct pipe_buffer* buffer,
|
||||
uint32_t pitch,
|
||||
boolean microtiled,
|
||||
boolean macrotiled);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue