r300g: output texture debug messages if only RADEON_DEBUG=tex is set
This commit is contained in:
parent
08edbe9f14
commit
8959608051
|
@ -87,7 +87,7 @@ r300_is_texture_referenced(struct pipe_context *pipe,
|
|||
{
|
||||
struct pipe_buffer* buf = 0;
|
||||
|
||||
r300_get_texture_buffer(texture, &buf, NULL);
|
||||
r300_get_texture_buffer(pipe->screen, texture, &buf, NULL);
|
||||
|
||||
return pipe->is_buffer_referenced(pipe, buf);
|
||||
}
|
||||
|
|
|
@ -319,6 +319,7 @@ r300_get_tex_transfer(struct pipe_screen *screen,
|
|||
{
|
||||
struct r300_texture *tex = (struct r300_texture *)texture;
|
||||
struct r300_transfer *trans;
|
||||
struct r300_screen *rscreen = r300_screen(screen);
|
||||
unsigned offset;
|
||||
|
||||
offset = r300_texture_get_offset(tex, level, zslice, face); /* in bytes */
|
||||
|
@ -330,11 +331,8 @@ r300_get_tex_transfer(struct pipe_screen *screen,
|
|||
trans->transfer.y = y;
|
||||
trans->transfer.width = w;
|
||||
trans->transfer.height = h;
|
||||
trans->transfer.stride = r300_texture_get_stride(tex, level);
|
||||
trans->transfer.stride = r300_texture_get_stride(rscreen, tex, level);
|
||||
trans->transfer.usage = usage;
|
||||
|
||||
/* XXX not sure whether it's required to set these two,
|
||||
the driver doesn't use them */
|
||||
trans->transfer.zslice = zslice;
|
||||
trans->transfer.face = face;
|
||||
|
||||
|
|
|
@ -42,10 +42,11 @@ static const unsigned microblock_table[5][3][2] = {
|
|||
{{ 2, 1}, {0, 0}, {0, 0}} /* 128 bits per pixel */
|
||||
};
|
||||
|
||||
static void r300_setup_texture_state(struct r300_texture* tex, boolean is_r500)
|
||||
static void r300_setup_texture_state(struct r300_screen* screen, struct r300_texture* tex)
|
||||
{
|
||||
struct r300_texture_state* state = &tex->state;
|
||||
struct pipe_texture *pt = &tex->tex;
|
||||
boolean is_r500 = screen->caps->is_r500;
|
||||
|
||||
state->format0 = R300_TX_WIDTH((pt->width0 - 1) & 0x7ff) |
|
||||
R300_TX_HEIGHT((pt->height0 - 1) & 0x7ff);
|
||||
|
@ -79,8 +80,8 @@ static void r300_setup_texture_state(struct r300_texture* tex, boolean is_r500)
|
|||
}
|
||||
assert(is_r500 || (pt->width0 <= 2048 && pt->height0 <= 2048));
|
||||
|
||||
debug_printf("r300: Set texture state (%dx%d, %d levels)\n",
|
||||
pt->width0, pt->height0, pt->last_level);
|
||||
SCREEN_DBG(screen, DBG_TEX, "r300: Set texture state (%dx%d, %d levels)\n",
|
||||
pt->width0, pt->height0, pt->last_level);
|
||||
}
|
||||
|
||||
unsigned r300_texture_get_offset(struct r300_texture* tex, unsigned level,
|
||||
|
@ -123,7 +124,8 @@ static unsigned r300_texture_get_tile_size(struct r300_texture* tex, int dim)
|
|||
* Return the stride, in bytes, of the texture images of the given texture
|
||||
* at the given level.
|
||||
*/
|
||||
unsigned r300_texture_get_stride(struct r300_texture* tex, unsigned level)
|
||||
unsigned r300_texture_get_stride(struct r300_screen* screen,
|
||||
struct r300_texture* tex, unsigned level)
|
||||
{
|
||||
unsigned tile_width, width;
|
||||
|
||||
|
@ -132,8 +134,8 @@ unsigned r300_texture_get_stride(struct r300_texture* tex, unsigned level)
|
|||
|
||||
/* Check the level. */
|
||||
if (level > tex->tex.last_level) {
|
||||
debug_printf("%s: level (%u) > last_level (%u)\n", __FUNCTION__,
|
||||
level, tex->tex.last_level);
|
||||
SCREEN_DBG(screen, DBG_TEX, "%s: level (%u) > last_level (%u)\n",
|
||||
__FUNCTION__, level, tex->tex.last_level);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -155,15 +157,17 @@ static unsigned r300_texture_get_nblocksy(struct r300_texture* tex,
|
|||
return util_format_get_nblocksy(tex->tex.format, height);
|
||||
}
|
||||
|
||||
static void r300_setup_miptree(struct r300_texture* tex)
|
||||
static void r300_setup_miptree(struct r300_screen* screen,
|
||||
struct r300_texture* tex)
|
||||
{
|
||||
struct pipe_texture* base = &tex->tex;
|
||||
unsigned stride, size, layer_size, nblocksy, i;
|
||||
|
||||
debug_printf("r300: Making miptree for texture, format %s\n", pf_name(base->format));
|
||||
SCREEN_DBG(screen, DBG_TEX, "r300: Making miptree for texture, format %s\n",
|
||||
pf_name(base->format));
|
||||
|
||||
for (i = 0; i <= base->last_level; i++) {
|
||||
stride = r300_texture_get_stride(tex, i);
|
||||
stride = r300_texture_get_stride(screen, tex, i);
|
||||
nblocksy = r300_texture_get_nblocksy(tex, i);
|
||||
layer_size = stride * nblocksy;
|
||||
|
||||
|
@ -177,7 +181,7 @@ static void r300_setup_miptree(struct r300_texture* tex)
|
|||
tex->layer_size[i] = layer_size;
|
||||
tex->pitch[i] = stride / util_format_get_blocksize(base->format);
|
||||
|
||||
debug_printf("r300: Texture miptree: Level %d "
|
||||
SCREEN_DBG(screen, DBG_TEX, "r300: Texture miptree: Level %d "
|
||||
"(%dx%dx%d px, pitch %d bytes) %d bytes total\n",
|
||||
i, u_minify(base->width0, i), u_minify(base->height0, i),
|
||||
u_minify(base->depth0, i), stride, tex->size);
|
||||
|
@ -196,6 +200,7 @@ static struct pipe_texture*
|
|||
const struct pipe_texture* template)
|
||||
{
|
||||
struct r300_texture* tex = CALLOC_STRUCT(r300_texture);
|
||||
struct r300_screen* rscreen = r300_screen(screen);
|
||||
|
||||
if (!tex) {
|
||||
return NULL;
|
||||
|
@ -206,8 +211,8 @@ static struct pipe_texture*
|
|||
tex->tex.screen = screen;
|
||||
|
||||
r300_setup_flags(tex);
|
||||
r300_setup_miptree(tex);
|
||||
r300_setup_texture_state(tex, r300_screen(screen)->caps->is_r500);
|
||||
r300_setup_miptree(rscreen, tex);
|
||||
r300_setup_texture_state(rscreen, tex);
|
||||
|
||||
tex->buffer = screen->buffer_create(screen, 2048,
|
||||
PIPE_BUFFER_USAGE_PIXEL,
|
||||
|
@ -273,6 +278,7 @@ static struct pipe_texture*
|
|||
struct pipe_buffer* buffer)
|
||||
{
|
||||
struct r300_texture* tex;
|
||||
struct r300_screen* rscreen = r300_screen(screen);
|
||||
|
||||
/* Support only 2D textures without mipmaps */
|
||||
if (base->target != PIPE_TEXTURE_2D ||
|
||||
|
@ -294,7 +300,7 @@ static struct pipe_texture*
|
|||
tex->pitch[0] = *stride / util_format_get_blocksize(base->format);
|
||||
|
||||
r300_setup_flags(tex);
|
||||
r300_setup_texture_state(tex, r300_screen(screen)->caps->is_r500);
|
||||
r300_setup_texture_state(rscreen, tex);
|
||||
|
||||
pipe_buffer_reference(&tex->buffer, buffer);
|
||||
|
||||
|
@ -361,7 +367,8 @@ void r300_init_screen_texture_functions(struct pipe_screen* screen)
|
|||
screen->video_surface_destroy= r300_video_surface_destroy;
|
||||
}
|
||||
|
||||
boolean r300_get_texture_buffer(struct pipe_texture* texture,
|
||||
boolean r300_get_texture_buffer(struct pipe_screen* screen,
|
||||
struct pipe_texture* texture,
|
||||
struct pipe_buffer** buffer,
|
||||
unsigned* stride)
|
||||
{
|
||||
|
@ -373,7 +380,7 @@ boolean r300_get_texture_buffer(struct pipe_texture* texture,
|
|||
pipe_buffer_reference(buffer, tex->buffer);
|
||||
|
||||
if (stride) {
|
||||
*stride = r300_texture_get_stride(tex, 0);
|
||||
*stride = r300_texture_get_stride(r300_screen(screen), tex, 0);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
|
|
@ -31,7 +31,8 @@ struct r300_texture;
|
|||
|
||||
void r300_init_screen_texture_functions(struct pipe_screen* screen);
|
||||
|
||||
unsigned r300_texture_get_stride(struct r300_texture* tex, unsigned level);
|
||||
unsigned r300_texture_get_stride(struct r300_screen* screen,
|
||||
struct r300_texture* tex, unsigned level);
|
||||
|
||||
unsigned r300_texture_get_offset(struct r300_texture* tex, unsigned level,
|
||||
unsigned zslice, unsigned face);
|
||||
|
@ -115,7 +116,8 @@ r300_video_surface(struct pipe_video_surface *pvs)
|
|||
|
||||
#ifndef R300_WINSYS_H
|
||||
|
||||
boolean r300_get_texture_buffer(struct pipe_texture* texture,
|
||||
boolean r300_get_texture_buffer(struct pipe_screen* screen,
|
||||
struct pipe_texture* texture,
|
||||
struct pipe_buffer** buffer,
|
||||
unsigned* stride);
|
||||
|
||||
|
|
|
@ -40,7 +40,8 @@ extern "C" {
|
|||
struct pipe_context* r300_create_context(struct pipe_screen* screen,
|
||||
struct radeon_winsys* radeon_winsys);
|
||||
|
||||
boolean r300_get_texture_buffer(struct pipe_texture* texture,
|
||||
boolean r300_get_texture_buffer(struct pipe_screen* screen,
|
||||
struct pipe_texture* texture,
|
||||
struct pipe_buffer** buffer,
|
||||
unsigned* stride);
|
||||
|
||||
|
|
|
@ -136,12 +136,13 @@ struct pipe_context* radeon_create_context(struct drm_api* api,
|
|||
}
|
||||
|
||||
boolean radeon_buffer_from_texture(struct drm_api* api,
|
||||
struct pipe_screen* screen,
|
||||
struct pipe_texture* texture,
|
||||
struct pipe_buffer** buffer,
|
||||
unsigned* stride)
|
||||
{
|
||||
/* XXX fix this */
|
||||
return r300_get_texture_buffer(texture, buffer, stride);
|
||||
return r300_get_texture_buffer(screen, texture, buffer, stride);
|
||||
}
|
||||
|
||||
/* Create a buffer from a handle. */
|
||||
|
@ -208,7 +209,7 @@ static boolean radeon_shared_handle_from_texture(struct drm_api *api,
|
|||
struct radeon_pipe_buffer* radeon_buffer;
|
||||
struct pipe_buffer *buffer = NULL;
|
||||
|
||||
if (!radeon_buffer_from_texture(api, texture, &buffer, stride)) {
|
||||
if (!radeon_buffer_from_texture(api, screen, texture, &buffer, stride)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -240,7 +241,7 @@ static boolean radeon_local_handle_from_texture(struct drm_api *api,
|
|||
unsigned *handle)
|
||||
{
|
||||
struct pipe_buffer *buffer = NULL;
|
||||
if (!radeon_buffer_from_texture(api, texture, &buffer, stride)) {
|
||||
if (!radeon_buffer_from_texture(api, screen, texture, &buffer, stride)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@ struct pipe_context* radeon_create_context(struct drm_api* api,
|
|||
struct pipe_screen* screen);
|
||||
|
||||
boolean radeon_buffer_from_texture(struct drm_api* api,
|
||||
struct pipe_screen* screen,
|
||||
struct pipe_texture* texture,
|
||||
struct pipe_buffer** buffer,
|
||||
unsigned* stride);
|
||||
|
|
Loading…
Reference in New Issue