Mesa (master): r300: remove unnecessary code
Module: Mesa Branch: master Commit: bbab68ae2db468cc72bf11b901d8e28ab86bd769 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bbab68ae2db468cc72bf11b901d8e28ab86bd769 Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Mar 6 13:09:47 2010 +0100 r300: remove unnecessary code _tnl_UpdateFixedFunctionProgram is already called in r300_draw.c --- src/mesa/drivers/dri/r300/r300_state.c | 17 - 1 files changed, 0 insertions(+), 17 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 9d1ff6e..ba4a963 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1985,23 +1985,6 @@ void r300UpdateShaders(r300ContextPtr rmesa) if (rmesa-options.hw_tcl_enabled) { struct r300_vertex_program *vp; - if (rmesa-radeon.NewGLState) { - int i; - for (i = _TNL_FIRST_MAT; i = _TNL_LAST_MAT; i++) { - rmesa-temp_attrib[i] = - TNL_CONTEXT(ctx)-vb.AttribPtr[i]; - TNL_CONTEXT(ctx)-vb.AttribPtr[i] = - rmesa-dummy_attrib[i]; - } - - _tnl_UpdateFixedFunctionProgram(ctx); - - for (i = _TNL_FIRST_MAT; i = _TNL_LAST_MAT; i++) { - TNL_CONTEXT(ctx)-vb.AttribPtr[i] = - rmesa-temp_attrib[i]; - } - } - vp = r300SelectAndTranslateVertexShader(ctx); r300SwitchFallback(ctx, R300_FALLBACK_VERTEX_PROGRAM, vp-error); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300: no need to flush on context init
Module: Mesa Branch: master Commit: e2d96b2bf805fef0bfb016be1895a49551e2faa7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e2d96b2bf805fef0bfb016be1895a49551e2faa7 Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Mar 6 13:18:11 2010 +0100 r300: no need to flush on context init --- src/mesa/drivers/dri/r300/r300_state.c |2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index ba4a963..6c2c367 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1762,8 +1762,6 @@ static void r300ResetHwState(r300ContextPtr r300) if (RADEON_DEBUG RADEON_STATE) fprintf(stderr, %s\n, __FUNCTION__); - radeon_firevertices(r300-radeon); - r300ColorMask(ctx, ctx-Color.ColorMask[0][RCOMP], ctx-Color.ColorMask[0][GCOMP], ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300: recalculate point size, if point min/max size changes
Module: Mesa Branch: master Commit: 89ea4022371998467faf26c5e27ab987469b91ef URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=89ea4022371998467faf26c5e27ab987469b91ef Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Mar 6 13:39:13 2010 +0100 r300: recalculate point size, if point min/max size changes Fixes two wine d3d9 unit tests --- src/mesa/drivers/dri/r300/r300_state.c |2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 6c2c367..5a056f0 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -794,12 +794,14 @@ static void r300PointParameter(GLcontext * ctx, GLenum pname, const GLfloat * pa R300_STATECHANGE(r300, ga_point_minmax); r300-hw.ga_point_minmax.cmd[1] = ~R300_GA_POINT_MINMAX_MIN_MASK; r300-hw.ga_point_minmax.cmd[1] |= (GLuint)(ctx-Point.MinSize * 6.0); + r300PointSize(ctx, ctx-Point.Size); break; case GL_POINT_SIZE_MAX: R300_STATECHANGE(r300, ga_point_minmax); r300-hw.ga_point_minmax.cmd[1] = ~R300_GA_POINT_MINMAX_MAX_MASK; r300-hw.ga_point_minmax.cmd[1] |= (GLuint)(ctx-Point.MaxSize * 6.0) R300_GA_POINT_MINMAX_MAX_SHIFT; + r300PointSize(ctx, ctx-Point.Size); break; case GL_POINT_DISTANCE_ATTENUATION: break; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300: VAP flush is needed only when vertex program or constants are changed
Module: Mesa Branch: master Commit: 042779dc85191e51db79090613b5cc4498474e23 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=042779dc85191e51db79090613b5cc4498474e23 Author: Maciej Cencora m.cenc...@gmail.com Date: Sun Mar 7 12:02:28 2010 +0100 r300: VAP flush is needed only when vertex program or constants are changed --- src/mesa/drivers/dri/r300/r300_cmdbuf.c | 21 + src/mesa/drivers/dri/r300/r300_context.h |1 - src/mesa/drivers/dri/r300/r300_state.c|1 - src/mesa/drivers/dri/r300/r300_vertprog.c |4 +--- 4 files changed, 2 insertions(+), 25 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 4787baf..6cfa568 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -90,8 +90,7 @@ void r300_emit_vpu(struct r300_context *r300, { BATCH_LOCALS(r300-radeon); -BEGIN_BATCH_NO_AUTOSTATE(5 + len); -OUT_BATCH_REGVAL(R300_VAP_PVS_STATE_FLUSH_REG, 0); +BEGIN_BATCH_NO_AUTOSTATE(3 + len); OUT_BATCH_REGVAL(R300_VAP_PVS_VECTOR_INDX_REG, addr); OUT_BATCH(CP_PACKET0(R300_VAP_PVS_UPLOAD_DATA, len-1) | RADEON_ONE_REG_WR); OUT_BATCH_TABLE(data, len); @@ -778,24 +777,6 @@ void r300InitCmdBuf(r300ContextPtr r300) /* VPU only on TCL */ if (has_tcl) { int i; - if (r300-radeon.radeonScreen-kernel_mm) { - ALLOC_STATE(vap_flush, always, 10, 0); - /* flush processing vertices */ - r300-hw.vap_flush.cmd[0] = cmdpacket0(r300-radeon.radeonScreen, R300_SC_SCREENDOOR, 1); - r300-hw.vap_flush.cmd[1] = 0; - r300-hw.vap_flush.cmd[2] = cmdpacket0(r300-radeon.radeonScreen, R300_RB3D_DSTCACHE_CTLSTAT, 1); - r300-hw.vap_flush.cmd[3] = R300_RB3D_DSTCACHE_CTLSTAT_DC_FLUSH_FLUSH_DIRTY_3D; - r300-hw.vap_flush.cmd[4] = cmdpacket0(r300-radeon.radeonScreen, RADEON_WAIT_UNTIL, 1); - r300-hw.vap_flush.cmd[5] = RADEON_WAIT_3D_IDLECLEAN; - r300-hw.vap_flush.cmd[6] = cmdpacket0(r300-radeon.radeonScreen, R300_SC_SCREENDOOR, 1); - r300-hw.vap_flush.cmd[7] = 0xff; - r300-hw.vap_flush.cmd[8] = cmdpacket0(r300-radeon.radeonScreen, R300_VAP_PVS_STATE_FLUSH_REG, 1); - r300-hw.vap_flush.cmd[9] = 0; - } else { - ALLOC_STATE(vap_flush, never, 10, 0); - } - - ALLOC_STATE(vpi, vpu, R300_VPI_CMDSIZE, 0); r300-hw.vpi.cmd[0] = cmdvpu(r300-radeon.radeonScreen, R300_PVS_CODE_START, 0); diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 78ab43a..df7115e 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -355,7 +355,6 @@ struct r300_hw_state { struct radeon_state_atom zb_hiz_offset; /* (4F44) */ struct radeon_state_atom zb_hiz_pitch; /* (4F54) */ - struct radeon_state_atom vap_flush; struct radeon_state_atom vpi; /* vp instructions */ struct radeon_state_atom vpp; /* vp parameters */ struct radeon_state_atom vps; /* vertex point size (?) */ diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 5a056f0..5979ded 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -366,7 +366,6 @@ static void r300ClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq ) p = (GLint) plane - (GLint) GL_CLIP_PLANE0; ip = (GLint *)ctx-Transform._ClipUserPlane[p]; - R300_STATECHANGE( rmesa, vap_flush ); R300_STATECHANGE( rmesa, vpucp[p] ); rmesa-hw.vpucp[p].cmd[R300_VPUCP_X] = ip[0]; rmesa-hw.vpucp[p].cmd[R300_VPUCP_Y] = ip[1]; diff --git a/src/mesa/drivers/dri/r300/r300_vertprog.c b/src/mesa/drivers/dri/r300/r300_vertprog.c index cbe4cb8..129004f 100644 --- a/src/mesa/drivers/dri/r300/r300_vertprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertprog.c @@ -342,8 +342,6 @@ static void r300EmitVertexProgram(r300ContextPtr r300, int dest, struct r300_ver assert((code-length 0) (code-length % 4 == 0)); - R300_STATECHANGE( r300, vap_flush ); - switch ((dest 8) 0xf) { case 0: R300_STATECHANGE(r300, vpi); @@ -381,7 +379,7 @@ void r300SetupVertexProgram(r300ContextPtr rmesa) ((drm_r300_cmd_header_t *) rmesa-hw.vpi.cmd)-vpu.count = 0; ((drm_r300_cmd_header_t *) rmesa-hw.vps.cmd)-vpu.count = 0; - R300_STATECHANGE(rmesa, vap_flush); + R300_STATECHANGE(rmesa, vap_cntl); R300_STATECHANGE(rmesa, vpp); param_count = r300VertexProgUpdateParams(ctx, prog, (float
Mesa (master): radeon: fallback to software in glCopyTexImage if blit isn' t available
Module: Mesa Branch: master Commit: 9543f7f05f416ef6c1ac160e12e2d7ceed3b32ae URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9543f7f05f416ef6c1ac160e12e2d7ceed3b32ae Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Feb 6 19:37:23 2010 +0100 radeon: fallback to software in glCopyTexImage if blit isn't available --- src/mesa/drivers/dri/radeon/radeon_tex_copy.c |4 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_tex_copy.c b/src/mesa/drivers/dri/radeon/radeon_tex_copy.c index 89fe991..a4bb03d 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tex_copy.c +++ b/src/mesa/drivers/dri/radeon/radeon_tex_copy.c @@ -53,6 +53,10 @@ do_copy_texsubimage(GLcontext *ctx, unsigned src_width; unsigned dst_width; +if (!radeon-vtbl.blit) { +return GL_FALSE; +} + if (_mesa_get_format_bits(timg-base.TexFormat, GL_DEPTH_BITS) 0) { rrb = radeon_get_depthbuffer(radeon); } else { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300: reset bos when validating buffers during blit
Module: Mesa Branch: master Commit: c0a0a1933d4c2a7d32284b5e7170e79ac6157043 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0a0a1933d4c2a7d32284b5e7170e79ac6157043 Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Feb 6 18:25:36 2010 +0100 r300: reset bos when validating buffers during blit --- src/mesa/drivers/dri/r300/r300_blit.c |3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_blit.c b/src/mesa/drivers/dri/r300/r300_blit.c index 2bc761b..f9c085e 100644 --- a/src/mesa/drivers/dri/r300/r300_blit.c +++ b/src/mesa/drivers/dri/r300/r300_blit.c @@ -381,6 +381,9 @@ static GLboolean validate_buffers(struct r300_context *r300, struct radeon_bo *dst_bo) { int ret; + +radeon_cs_space_reset_bos(r300-radeon.cmdbuf.cs); + ret = radeon_cs_space_check_with_bo(r300-radeon.cmdbuf.cs, src_bo, RADEON_GEM_DOMAIN_VRAM, 0); if (ret) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300: allow src and dst BOs to be placed in GTT during blit
Module: Mesa Branch: master Commit: ea3494b98cc764ead7e96746c0247ebc3a68e629 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea3494b98cc764ead7e96746c0247ebc3a68e629 Author: Maciej Cencora m.cenc...@gmail.com Date: Thu Mar 4 18:35:55 2010 +0100 r300: allow src and dst BOs to be placed in GTT during blit Fixes some relocation failures --- src/mesa/drivers/dri/r300/r300_blit.c | 10 ++ 1 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_blit.c b/src/mesa/drivers/dri/r300/r300_blit.c index f9c085e..d870c7f 100644 --- a/src/mesa/drivers/dri/r300/r300_blit.c +++ b/src/mesa/drivers/dri/r300/r300_blit.c @@ -385,18 +385,12 @@ static GLboolean validate_buffers(struct r300_context *r300, radeon_cs_space_reset_bos(r300-radeon.cmdbuf.cs); ret = radeon_cs_space_check_with_bo(r300-radeon.cmdbuf.cs, -src_bo, RADEON_GEM_DOMAIN_VRAM, 0); +src_bo, RADEON_GEM_DOMAIN_VRAM | RADEON_GEM_DOMAIN_GTT, 0); if (ret) return GL_FALSE; ret = radeon_cs_space_check_with_bo(r300-radeon.cmdbuf.cs, -dst_bo, 0, RADEON_GEM_DOMAIN_VRAM); -if (ret) -return GL_FALSE; - -ret = radeon_cs_space_check_with_bo(r300-radeon.cmdbuf.cs, - first_elem(r300-radeon.dma.reserved)-bo, -RADEON_GEM_DOMAIN_GTT, 0); +dst_bo, 0, RADEON_GEM_DOMAIN_VRAM | RADEON_GEM_DOMAIN_GTT); if (ret) return GL_FALSE; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon: no need to emit full state twice after flush
Module: Mesa Branch: master Commit: 78eb4a2ea569a7bd624bbf83ece5c9acef82a8de URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=78eb4a2ea569a7bd624bbf83ece5c9acef82a8de Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Jan 16 15:11:37 2010 +0100 radeon: no need to emit full state twice after flush --- src/mesa/drivers/dri/radeon/radeon_common.c |5 - 1 files changed, 0 insertions(+), 5 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c index 79f3ff7..13f1f06 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.c +++ b/src/mesa/drivers/dri/radeon/radeon_common.c @@ -1325,11 +1325,6 @@ void rcommonBeginBatch(radeonContextPtr rmesa, int n, const char *function, int line) { - if (!rmesa-cmdbuf.cs-cdw dostate) { - radeon_print(RADEON_STATE, RADEON_NORMAL, - Reemit state after flush (from %s)\n, function); - radeonEmitState(rmesa); - } radeon_cs_begin(rmesa-cmdbuf.cs, n, file, function, line); radeon_print(RADEON_CS, RADEON_VERBOSE, BEGIN_BATCH(%d) at %d, from %s:%i\n, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300: don't enable EXT_packed_depth_stencil
Module: Mesa Branch: master Commit: 9c0c6c26decfa533ad3fe39f83e7530d4cfc8c2f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9c0c6c26decfa533ad3fe39f83e7530d4cfc8c2f Author: Maciej Cencora m.cenc...@gmail.com Date: Sun Feb 14 00:02:05 2010 +0100 r300: don't enable EXT_packed_depth_stencil R300 hw doesn't support sampling from Z24_S8 or S8_Z24 formats. --- src/mesa/drivers/dri/r300/r300_context.c |4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index df4cc11..ff35cd5 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -109,7 +109,6 @@ static const struct dri_extension card_extensions[] = { {GL_EXT_blend_func_separate, GL_EXT_blend_func_separate_functions}, {GL_EXT_blend_minmax, GL_EXT_blend_minmax_functions}, {GL_EXT_blend_subtract,NULL}, - {GL_EXT_packed_depth_stencil, NULL}, {GL_EXT_fog_coord, GL_EXT_fog_coord_functions }, {GL_EXT_gpu_program_parameters, GL_EXT_gpu_program_parameters_functions}, {GL_EXT_provoking_vertex, GL_EXT_provoking_vertex_functions }, @@ -456,6 +455,9 @@ static void r300InitGLExtensions(GLcontext *ctx) } if (r300-radeon.radeonScreen-chip_family = CHIP_FAMILY_RV350) _mesa_enable_extension(ctx, GL_ARB_half_float_vertex); + + if (r300-radeon.radeonScreen-chip_family = CHIP_FAMILY_RV515) + _mesa_enable_extension(ctx, GL_EXT_packed_depth_stencil); } static void r300InitIoctlFuncs(struct dd_function_table *functions) ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon: add tile size getter
Module: Mesa Branch: master Commit: 65faa27aa639e7352708a30105db3318f22f5f93 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=65faa27aa639e7352708a30105db3318f22f5f93 Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Jan 16 23:11:10 2010 +0100 radeon: add tile size getter --- src/mesa/drivers/dri/radeon/radeon_tile.c | 40 - src/mesa/drivers/dri/radeon/radeon_tile.h |2 + 2 files changed, 41 insertions(+), 1 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_tile.c b/src/mesa/drivers/dri/radeon/radeon_tile.c index 56f2fc4..b998baf 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tile.c +++ b/src/mesa/drivers/dri/radeon/radeon_tile.c @@ -243,4 +243,42 @@ void tile_image(const void * src, unsigned src_pitch, assert(0); break; } -} \ No newline at end of file +} + +void get_tile_size(gl_format format, unsigned *block_width, unsigned *block_height) +{ +switch (_mesa_get_format_bytes(format)) +{ +case 16: +*block_width = 1; +*block_height = 1; +break; +case 8: +*block_width = 2; +*block_height = 2; +break; +case 4: +*block_width = 4; +*block_height = 2; +break; +case 2: +if (_mesa_get_format_bits(format, GL_DEPTH_BITS)) +{ +*block_width = 4; +*block_height = 4; +} +else +{ +*block_width = 8; +*block_height = 2; +} +break; +case 1: +*block_width = 8; +*block_height = 4; +break; +default: +assert(0); +break; +} +} diff --git a/src/mesa/drivers/dri/radeon/radeon_tile.h b/src/mesa/drivers/dri/radeon/radeon_tile.h index 4985e55..06850b3 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tile.h +++ b/src/mesa/drivers/dri/radeon/radeon_tile.h @@ -30,3 +30,5 @@ void tile_image(const void * src, unsigned src_pitch, void *dst, unsigned dst_pitch, gl_format format, unsigned width, unsigned height); + +void get_tile_size(gl_format format, unsigned *block_width, unsigned *block_height); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon: add software untiling functions
Module: Mesa Branch: master Commit: 5fefca5dbae9a5b00a3d624da0b5e582c00ad280 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5fefca5dbae9a5b00a3d624da0b5e582c00ad280 Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Feb 6 13:46:17 2010 +0100 radeon: add software untiling functions --- src/mesa/drivers/dri/radeon/radeon_tile.c | 221 + src/mesa/drivers/dri/radeon/radeon_tile.h |4 + 2 files changed, 225 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_tile.c b/src/mesa/drivers/dri/radeon/radeon_tile.c index b998baf..1e4729a 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tile.c +++ b/src/mesa/drivers/dri/radeon/radeon_tile.c @@ -245,6 +245,227 @@ void tile_image(const void * src, unsigned src_pitch, } } +static void micro_untile_8_x_4_8bit(const void * const src, unsigned src_pitch, +void * const dst, unsigned dst_pitch, +unsigned width, unsigned height) +{ +unsigned row; /* current destination row */ +unsigned col; /* current destination column */ +unsigned k; /* current tile number */ +const unsigned tile_width = 8, tile_height = 4; +const unsigned tiles_in_row = (width + (tile_width - 1)) / tile_width; + +assert(src_pitch % tile_width == 0); + +k = 0; +for (row = 0; row height; row += tile_height) +{ +for (col = 0; col width; col += tile_width, ++k) +{ +uint8_t *src2 = (uint8_t *)src + row * src_pitch + + (k % tiles_in_row) * MICRO_TILE_SIZE / sizeof(uint8_t); +uint8_t *dst2 = (uint8_t *)dst + dst_pitch * row + col; +unsigned j; + +for (j = 0; j MIN2(tile_height, height - row); ++j) +{ +unsigned columns = MIN2(tile_width, width - col); +memcpy(dst2, src2, columns * sizeof(uint8_t)); +dst2 += dst_pitch; +src2 += tile_width; +} +} +} +} + +static void micro_untile_8_x_2_16bit(const void * const src, unsigned src_pitch, + void * const dst, unsigned dst_pitch, + unsigned width, unsigned height) +{ +unsigned row; /* current destination row */ +unsigned col; /* current destination column */ +unsigned k; /* current tile number */ +const unsigned tile_width = 8, tile_height = 2; +const unsigned tiles_in_row = (width + (tile_width - 1)) / tile_width; + +assert(src_pitch % tile_width == 0); + +k = 0; +for (row = 0; row height; row += tile_height) +{ +for (col = 0; col width; col += tile_width, ++k) +{ +uint16_t *src2 = (uint16_t *)src + row * src_pitch + + (k % tiles_in_row) * MICRO_TILE_SIZE / sizeof(uint16_t); +uint16_t *dst2 = (uint16_t *)dst + dst_pitch * row + col; +unsigned j; + +for (j = 0; j MIN2(tile_height, height - row); ++j) +{ +unsigned columns = MIN2(tile_width, width - col); +memcpy(dst2, src2, columns * sizeof(uint16_t)); +dst2 += dst_pitch; +src2 += tile_width; +} +} +} +} + +static void micro_untile_4_x_4_16bit(const void * const src, unsigned src_pitch, + void * const dst, unsigned dst_pitch, + unsigned width, unsigned height) +{ +unsigned row; /* current destination row */ +unsigned col; /* current destination column */ +unsigned k; /* current tile number */ +const unsigned tile_width = 4, tile_height = 4; +const unsigned tiles_in_row = (width + (tile_width - 1)) / tile_width; + +assert(src_pitch % tile_width == 0); + +k = 0; +for (row = 0; row height; row += tile_height) +{ +for (col = 0; col width; col += tile_width, ++k) +{ +uint16_t *src2 = (uint16_t *)src + row * src_pitch + + (k % tiles_in_row) * MICRO_TILE_SIZE / sizeof(uint16_t); +uint16_t *dst2 = (uint16_t *)dst + dst_pitch * row + col; +unsigned j; + +for (j = 0; j MIN2(tile_height, height - row); ++j) +{ +unsigned columns = MIN2(tile_width, width - col); +memcpy(dst2, src2, columns * sizeof(uint16_t)); +dst2 += dst_pitch; +src2 += tile_width; +} +} +} +} + +static void micro_untile_4_x_2_32bit(const void * const src, unsigned src_pitch, + void * const dst, unsigned dst_pitch, + unsigned width, unsigned height) +{ +unsigned row; /* current destination row */ +unsigned col; /* current destination column */ +unsigned k; /* current tile number */ +const unsigned
Mesa (master): radeon: add some debugging info to sw tiling/ untiling functions
Module: Mesa Branch: master Commit: 8014b5f06853a5926ee772af232abdc9cd4e90c4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8014b5f06853a5926ee772af232abdc9cd4e90c4 Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Feb 6 18:38:01 2010 +0100 radeon: add some debugging info to sw tiling/untiling functions --- src/mesa/drivers/dri/radeon/radeon_tile.c | 11 ++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_tile.c b/src/mesa/drivers/dri/radeon/radeon_tile.c index 1e4729a..935fa45 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tile.c +++ b/src/mesa/drivers/dri/radeon/radeon_tile.c @@ -30,7 +30,8 @@ #include stdint.h #include string.h -#include main/macros.h +#include main/macros.h +#include radeon_debug.h #define MICRO_TILE_SIZE 32 @@ -215,6 +216,10 @@ void tile_image(const void * src, unsigned src_pitch, assert(dst_pitch = width); assert(dst_pitch * _mesa_get_format_bytes(format) % MICRO_TILE_SIZE == 0); +radeon_print(RADEON_TEXTURE, RADEON_TRACE, + Software tiling: src_pitch %d, dst_pitch %d, width %d, height %d, bpp %d\n, + src_pitch, dst_pitch, width, height, _mesa_get_format_bytes(format)); + switch (_mesa_get_format_bytes(format)) { case 16: @@ -436,6 +441,10 @@ void untile_image(const void * src, unsigned src_pitch, assert(dst_pitch = width); assert(src_pitch * _mesa_get_format_bytes(format) % MICRO_TILE_SIZE == 0); +radeon_print(RADEON_TEXTURE, RADEON_TRACE, + Software untiling: src_pitch %d, dst_pitch %d, width %d, height %d, bpp %d\n, + src_pitch, dst_pitch, width, height, _mesa_get_format_bytes(format)); + switch (_mesa_get_format_bytes(format)) { case 16: ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon: add texture helper function
Module: Mesa Branch: master Commit: b078a613bedb76242af177bee12520203bd63d50 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b078a613bedb76242af177bee12520203bd63d50 Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Jan 9 20:36:47 2010 +0100 radeon: add texture helper function --- src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c | 26 ++ src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h |3 ++ 2 files changed, 29 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c index cd843d9..117d695 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c @@ -81,6 +81,32 @@ static unsigned get_compressed_image_size( return rowStride * ((height + blockHeight - 1) / blockHeight); } +static unsigned is_pot(unsigned value) +{ + unsigned m; + + for (m = 1; m value; m *= 2) {} + + return value == m; +} + +unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, unsigned width) +{ + if (_mesa_is_format_compressed(format)) { + return get_aligned_compressed_row_stride(format, width, rmesa-texture_compressed_row_align); + } else { + unsigned row_align; + + if (is_pot(width)) { + row_align = rmesa-texture_row_align - 1; + } else { + row_align = rmesa-texture_rect_row_align - 1; + } + + return (_mesa_format_row_stride(format, width) + row_align) ~row_align; + } +} + /** * Compute sizes and fill in offset and blit information for the given * image (determined by \p face and \p level). diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h index c911688..424bf51 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h @@ -89,4 +89,7 @@ void radeon_try_alloc_miptree(radeonContextPtr rmesa, radeonTexObj *t); GLuint radeon_miptree_image_offset(radeon_mipmap_tree *mt, GLuint face, GLuint level); uint32_t get_base_teximage_offset(radeonTexObj *texObj); + +unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, unsigned width); + #endif /* __RADEON_MIPMAP_TREE_H_ */ ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon: added tiling functions
Module: Mesa Branch: master Commit: 88a99bb305186fd0eaaae9bd0dbfa4c45f14cac7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=88a99bb305186fd0eaaae9bd0dbfa4c45f14cac7 Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Jan 16 18:38:17 2010 +0100 radeon: added tiling functions --- src/mesa/drivers/dri/r200/Makefile|3 +- src/mesa/drivers/dri/r200/radeon_tile.c |1 + src/mesa/drivers/dri/r200/radeon_tile.h |1 + src/mesa/drivers/dri/r300/Makefile|3 +- src/mesa/drivers/dri/r300/radeon_tile.c |1 + src/mesa/drivers/dri/r300/radeon_tile.h |1 + src/mesa/drivers/dri/r600/Makefile|3 +- src/mesa/drivers/dri/r600/radeon_tile.c |1 + src/mesa/drivers/dri/r600/radeon_tile.h |1 + src/mesa/drivers/dri/radeon/Makefile |3 +- src/mesa/drivers/dri/radeon/radeon_tile.c | 246 + src/mesa/drivers/dri/radeon/radeon_tile.h | 32 12 files changed, 292 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/r200/Makefile b/src/mesa/drivers/dri/r200/Makefile index 2e86e8b..d91e548 100644 --- a/src/mesa/drivers/dri/r200/Makefile +++ b/src/mesa/drivers/dri/r200/Makefile @@ -24,7 +24,8 @@ RADEON_COMMON_SOURCES = \ radeon_queryobj.c \ radeon_span.c \ radeon_texture.c \ - radeon_tex_copy.c + radeon_tex_copy.c \ + radeon_tile.c DRIVER_SOURCES = r200_context.c \ r200_ioctl.c \ diff --git a/src/mesa/drivers/dri/r200/radeon_tile.c b/src/mesa/drivers/dri/r200/radeon_tile.c new file mode 12 index 000..d4bfe27 --- /dev/null +++ b/src/mesa/drivers/dri/r200/radeon_tile.c @@ -0,0 +1 @@ +../radeon/radeon_tile.c \ No newline at end of file diff --git a/src/mesa/drivers/dri/r200/radeon_tile.h b/src/mesa/drivers/dri/r200/radeon_tile.h new file mode 12 index 000..31074c5 --- /dev/null +++ b/src/mesa/drivers/dri/r200/radeon_tile.h @@ -0,0 +1 @@ +../radeon/radeon_tile.h \ No newline at end of file diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index 08934fc..730d801 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -34,7 +34,8 @@ RADEON_COMMON_SOURCES = \ radeon_span.c \ radeon_queryobj.c \ radeon_texture.c \ - radeon_tex_copy.c + radeon_tex_copy.c \ + radeon_tile.c DRIVER_SOURCES = \ radeon_screen.c \ diff --git a/src/mesa/drivers/dri/r300/radeon_tile.c b/src/mesa/drivers/dri/r300/radeon_tile.c new file mode 12 index 000..d4bfe27 --- /dev/null +++ b/src/mesa/drivers/dri/r300/radeon_tile.c @@ -0,0 +1 @@ +../radeon/radeon_tile.c \ No newline at end of file diff --git a/src/mesa/drivers/dri/r300/radeon_tile.h b/src/mesa/drivers/dri/r300/radeon_tile.h new file mode 12 index 000..31074c5 --- /dev/null +++ b/src/mesa/drivers/dri/r300/radeon_tile.h @@ -0,0 +1 @@ +../radeon/radeon_tile.h \ No newline at end of file diff --git a/src/mesa/drivers/dri/r600/Makefile b/src/mesa/drivers/dri/r600/Makefile index 2478b12..b6d1c5f 100644 --- a/src/mesa/drivers/dri/r600/Makefile +++ b/src/mesa/drivers/dri/r600/Makefile @@ -34,7 +34,8 @@ RADEON_COMMON_SOURCES = \ radeon_span.c \ radeon_texture.c \ radeon_queryobj.c \ - radeon_tex_copy.c + radeon_tex_copy.c \ + radeon_tile.c DRIVER_SOURCES = \ radeon_screen.c \ diff --git a/src/mesa/drivers/dri/r600/radeon_tile.c b/src/mesa/drivers/dri/r600/radeon_tile.c new file mode 12 index 000..d4bfe27 --- /dev/null +++ b/src/mesa/drivers/dri/r600/radeon_tile.c @@ -0,0 +1 @@ +../radeon/radeon_tile.c \ No newline at end of file diff --git a/src/mesa/drivers/dri/r600/radeon_tile.h b/src/mesa/drivers/dri/r600/radeon_tile.h new file mode 12 index 000..31074c5 --- /dev/null +++ b/src/mesa/drivers/dri/r600/radeon_tile.h @@ -0,0 +1 @@ +../radeon/radeon_tile.h \ No newline at end of file diff --git a/src/mesa/drivers/dri/radeon/Makefile b/src/mesa/drivers/dri/radeon/Makefile index fc6d1c8..f7e8059 100644 --- a/src/mesa/drivers/dri/radeon/Makefile +++ b/src/mesa/drivers/dri/radeon/Makefile @@ -25,7 +25,8 @@ RADEON_COMMON_SOURCES = \ radeon_queryobj.c \ radeon_span.c \ radeon_texture.c \ - radeon_tex_copy.c + radeon_tex_copy.c \ + radeon_tile.c DRIVER_SOURCES = \ radeon_context.c \ diff --git a/src/mesa/drivers/dri/radeon/radeon_tile.c b/src/mesa/drivers/dri/radeon/radeon_tile.c new file mode 100644 index 000..56f2fc4 --- /dev/null +++ b/src/mesa/drivers/dri/radeon/radeon_tile.c @@ -0,0 +1,246 @@ +/* + * Copyright (C) 2010 Maciej Cencora m.cenc...@gmail.com + * + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * Software), to deal in the Software without restriction, including + * without limitation the
Mesa (master): radeon: minor refactoring of mipmap code
Module: Mesa Branch: master Commit: 0d3835475fcb803a295dc738d90b83788bdc9472 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0d3835475fcb803a295dc738d90b83788bdc9472 Author: Maciej Cencora m.cenc...@gmail.com Date: Sat Jan 16 23:11:36 2010 +0100 radeon: minor refactoring of mipmap code --- src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c | 50 ++ src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h |6 +++ 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c index 117d695..8c1f96e 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c @@ -36,6 +36,7 @@ #include main/texobj.h #include main/enums.h #include radeon_texture.h +#include radeon_tile.h static unsigned get_aligned_compressed_row_stride( gl_format format, @@ -69,16 +70,30 @@ static unsigned get_aligned_compressed_row_stride( return stride; } -static unsigned get_compressed_image_size( +unsigned get_texture_image_size( gl_format format, unsigned rowStride, - unsigned height) + unsigned height, + unsigned depth, + unsigned tiling) { - unsigned blockWidth, blockHeight; + if (_mesa_is_format_compressed(format)) { + unsigned blockWidth, blockHeight; - _mesa_get_format_block_size(format, blockWidth, blockHeight); + _mesa_get_format_block_size(format, blockWidth, blockHeight); + + return rowStride * ((height + blockHeight - 1) / blockHeight) * depth; + } else if (tiling) { + /* Need to align height to tile height */ + unsigned tileWidth, tileHeight; + + get_tile_size(format, tileWidth, tileHeight); + tileHeight--; - return rowStride * ((height + blockHeight - 1) / blockHeight); + height = (height + tileHeight) ~tileHeight; + } + + return rowStride * height * depth; } static unsigned is_pot(unsigned value) @@ -118,34 +133,15 @@ static void compute_tex_image_offset(radeonContextPtr rmesa, radeon_mipmap_tree GLuint face, GLuint level, GLuint* curOffset) { radeon_mipmap_level *lvl = mt-levels[level]; - uint32_t row_align; GLuint height; height = _mesa_next_pow_two_32(lvl-height); - /* Find image size in bytes */ - if (_mesa_is_format_compressed(mt-mesaFormat)) { - lvl-rowstride = get_aligned_compressed_row_stride(mt-mesaFormat, lvl-width, rmesa-texture_compressed_row_align); - lvl-size = get_compressed_image_size(mt-mesaFormat, lvl-rowstride, height); - } else if (mt-target == GL_TEXTURE_RECTANGLE_NV) { - row_align = rmesa-texture_rect_row_align - 1; - lvl-rowstride = (_mesa_format_row_stride(mt-mesaFormat, lvl-width) + row_align) ~row_align; - lvl-size = lvl-rowstride * height; - } else if (mt-tilebits RADEON_TXO_MICRO_TILE) { - /* tile pattern is 16 bytes x2. mipmaps stay 32 byte aligned, -* though the actual offset may be different (if texture is less than -* 32 bytes width) to the untiled case */ - lvl-rowstride = (_mesa_format_row_stride(mt-mesaFormat, lvl-width) * 2 + 31) ~31; - lvl-size = lvl-rowstride * ((height + 1) / 2) * lvl-depth; - } else { - row_align = rmesa-texture_row_align - 1; - lvl-rowstride = (_mesa_format_row_stride(mt-mesaFormat, lvl-width) + row_align) ~row_align; - lvl-size = lvl-rowstride * height * lvl-depth; - } + lvl-rowstride = get_texture_image_row_stride(rmesa, mt-mesaFormat, lvl-width); + lvl-size = get_texture_image_size(mt-mesaFormat, lvl-rowstride, lvl-height, lvl-depth, mt-tilebits); + assert(lvl-size 0); - /* All images are aligned to a 32-byte offset */ - *curOffset = (*curOffset + 0x1f) ~0x1f; lvl-faces[face].offset = *curOffset; *curOffset += lvl-size; diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h index 424bf51..69103e6 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h @@ -92,4 +92,10 @@ uint32_t get_base_teximage_offset(radeonTexObj *texObj); unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, unsigned width); +unsigned get_texture_image_size( + gl_format format, + unsigned rowStride, + unsigned height, + unsigned depth, + unsigned tiling); #endif /* __RADEON_MIPMAP_TREE_H_ */ ___ mesa-commit mailing list
Mesa (master): radeon: properly calculate rowstride for tiled images
Module: Mesa Branch: master Commit: d0ca5c3100dfe7ee634e3b455002e11e88822ea7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d0ca5c3100dfe7ee634e3b455002e11e88822ea7 Author: Maciej Cencora m.cenc...@gmail.com Date: Sun Mar 7 12:09:43 2010 +0100 radeon: properly calculate rowstride for tiled images --- src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c | 14 +- src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h |2 +- src/mesa/drivers/dri/radeon/radeon_texture.c |4 ++-- src/mesa/drivers/dri/radeon/radeon_tile.c|2 -- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c index 8c1f96e..ee91f30 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c @@ -105,17 +105,21 @@ static unsigned is_pot(unsigned value) return value == m; } -unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, unsigned width) +unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, unsigned width, unsigned tiling) { if (_mesa_is_format_compressed(format)) { return get_aligned_compressed_row_stride(format, width, rmesa-texture_compressed_row_align); } else { unsigned row_align; - if (is_pot(width)) { - row_align = rmesa-texture_row_align - 1; - } else { + if (!is_pot(width)) { row_align = rmesa-texture_rect_row_align - 1; + } else if (tiling) { + unsigned tileWidth, tileHeight; + get_tile_size(format, tileWidth, tileHeight); + row_align = tileWidth * _mesa_get_format_bytes(format) - 1; + } else { + row_align = rmesa-texture_row_align - 1; } return (_mesa_format_row_stride(format, width) + row_align) ~row_align; @@ -137,7 +141,7 @@ static void compute_tex_image_offset(radeonContextPtr rmesa, radeon_mipmap_tree height = _mesa_next_pow_two_32(lvl-height); - lvl-rowstride = get_texture_image_row_stride(rmesa, mt-mesaFormat, lvl-width); + lvl-rowstride = get_texture_image_row_stride(rmesa, mt-mesaFormat, lvl-width, mt-tilebits); lvl-size = get_texture_image_size(mt-mesaFormat, lvl-rowstride, lvl-height, lvl-depth, mt-tilebits); assert(lvl-size 0); diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h index 69103e6..088f970 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h @@ -90,7 +90,7 @@ GLuint radeon_miptree_image_offset(radeon_mipmap_tree *mt, GLuint face, GLuint level); uint32_t get_base_teximage_offset(radeonTexObj *texObj); -unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, unsigned width); +unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, unsigned width, unsigned tiling); unsigned get_texture_image_size( gl_format format, diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c index ff37fd3..62dec2d 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texture.c +++ b/src/mesa/drivers/dri/radeon/radeon_texture.c @@ -664,6 +664,7 @@ static void radeon_store_teximage(GLcontext* ctx, int dims, struct gl_texture_image *texImage, int compressed) { + radeonContextPtr rmesa = RADEON_CONTEXT(ctx); radeonTexObj *t = radeon_tex_obj(texObj); radeon_texture_image* image = get_radeon_texture_image(texImage); @@ -678,8 +679,7 @@ static void radeon_store_teximage(GLcontext* ctx, int dims, dstRowStride = image-mt-levels[image-mtlevel].rowstride; } else if (t-bo) { /* TFP case */ - /* TODO */ - assert(0); + dstRowStride = get_texture_image_row_stride(rmesa, texImage-TexFormat, width, 0); } else { dstRowStride = _mesa_format_row_stride(texImage-TexFormat, texImage-Width); } diff --git a/src/mesa/drivers/dri/radeon/radeon_tile.c b/src/mesa/drivers/dri/radeon/radeon_tile.c index 935fa45..403da11 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tile.c +++ b/src/mesa/drivers/dri/radeon/radeon_tile.c @@ -214,7 +214,6 @@ void tile_image(const void * src, unsigned src_pitch, { assert(src_pitch = width); assert(dst_pitch = width); -assert(dst_pitch * _mesa_get_format_bytes(format) % MICRO_TILE_SIZE == 0); radeon_print(RADEON_TEXTURE, RADEON_TRACE, Software tiling: src_pitch %d, dst_pitch %d, width %d, height %d, bpp %d\n, @@ -439,7 +438,6 @@ void
Mesa (master): radeon: move glGetTexImage handlers to seperate file
Module: Mesa Branch: master Commit: ccbe3f0314c8278c55e1046a619969ae539564de URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ccbe3f0314c8278c55e1046a619969ae539564de Author: Maciej Cencora m.cenc...@gmail.com Date: Sun Jan 17 12:47:46 2010 +0100 radeon: move glGetTexImage handlers to seperate file --- src/mesa/drivers/dri/r200/Makefile|1 + src/mesa/drivers/dri/r200/radeon_tex_getimage.c |1 + src/mesa/drivers/dri/r300/Makefile|1 + src/mesa/drivers/dri/r300/radeon_tex_getimage.c |1 + src/mesa/drivers/dri/r600/Makefile|1 + src/mesa/drivers/dri/r600/radeon_tex_getimage.c |1 + src/mesa/drivers/dri/radeon/Makefile |1 + src/mesa/drivers/dri/radeon/radeon_tex_getimage.c | 95 + src/mesa/drivers/dri/radeon/radeon_texture.c | 60 - 9 files changed, 102 insertions(+), 60 deletions(-) diff --git a/src/mesa/drivers/dri/r200/Makefile b/src/mesa/drivers/dri/r200/Makefile index d91e548..3f87100 100644 --- a/src/mesa/drivers/dri/r200/Makefile +++ b/src/mesa/drivers/dri/r200/Makefile @@ -25,6 +25,7 @@ RADEON_COMMON_SOURCES = \ radeon_span.c \ radeon_texture.c \ radeon_tex_copy.c \ + radeon_tex_getimage.c \ radeon_tile.c DRIVER_SOURCES = r200_context.c \ diff --git a/src/mesa/drivers/dri/r200/radeon_tex_getimage.c b/src/mesa/drivers/dri/r200/radeon_tex_getimage.c new file mode 12 index 000..d9836d7 --- /dev/null +++ b/src/mesa/drivers/dri/r200/radeon_tex_getimage.c @@ -0,0 +1 @@ +../radeon/radeon_tex_getimage.c \ No newline at end of file diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index 730d801..4257a32 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -35,6 +35,7 @@ RADEON_COMMON_SOURCES = \ radeon_queryobj.c \ radeon_texture.c \ radeon_tex_copy.c \ + radeon_tex_getimage.c \ radeon_tile.c DRIVER_SOURCES = \ diff --git a/src/mesa/drivers/dri/r300/radeon_tex_getimage.c b/src/mesa/drivers/dri/r300/radeon_tex_getimage.c new file mode 12 index 000..d9836d7 --- /dev/null +++ b/src/mesa/drivers/dri/r300/radeon_tex_getimage.c @@ -0,0 +1 @@ +../radeon/radeon_tex_getimage.c \ No newline at end of file diff --git a/src/mesa/drivers/dri/r600/Makefile b/src/mesa/drivers/dri/r600/Makefile index b6d1c5f..f76859d 100644 --- a/src/mesa/drivers/dri/r600/Makefile +++ b/src/mesa/drivers/dri/r600/Makefile @@ -35,6 +35,7 @@ RADEON_COMMON_SOURCES = \ radeon_texture.c \ radeon_queryobj.c \ radeon_tex_copy.c \ + radeon_tex_getimage.c \ radeon_tile.c DRIVER_SOURCES = \ diff --git a/src/mesa/drivers/dri/r600/radeon_tex_getimage.c b/src/mesa/drivers/dri/r600/radeon_tex_getimage.c new file mode 12 index 000..d9836d7 --- /dev/null +++ b/src/mesa/drivers/dri/r600/radeon_tex_getimage.c @@ -0,0 +1 @@ +../radeon/radeon_tex_getimage.c \ No newline at end of file diff --git a/src/mesa/drivers/dri/radeon/Makefile b/src/mesa/drivers/dri/radeon/Makefile index f7e8059..6904ebb 100644 --- a/src/mesa/drivers/dri/radeon/Makefile +++ b/src/mesa/drivers/dri/radeon/Makefile @@ -26,6 +26,7 @@ RADEON_COMMON_SOURCES = \ radeon_span.c \ radeon_texture.c \ radeon_tex_copy.c \ + radeon_tex_getimage.c \ radeon_tile.c DRIVER_SOURCES = \ diff --git a/src/mesa/drivers/dri/radeon/radeon_tex_getimage.c b/src/mesa/drivers/dri/radeon/radeon_tex_getimage.c new file mode 100644 index 000..7bf6dcc --- /dev/null +++ b/src/mesa/drivers/dri/radeon/radeon_tex_getimage.c @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2009 Maciej Cencora. + * Copyright (C) 2008 Nicolai Haehnle. + * Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. + * + * The Weather Channel (TM) funded Tungsten Graphics to develop the + * initial release of the Radeon 8500 driver under the XFree86 license. + * This notice must be preserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * Software), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE + * LIABLE FOR ANY CLAIM,
Mesa (master): radeon: Some possible improvements that I spoted in radeon_tiled_texture branch.
Module: Mesa Branch: master Commit: 2b801066a1fcd8a83a367f70736d6adf2043f979 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b801066a1fcd8a83a367f70736d6adf2043f979 Author: Maciej Cencora m.cenc...@gmail.com Date: Sun Mar 7 12:15:25 2010 +0100 radeon: Some possible improvements that I spoted in radeon_tiled_texture branch. --- src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c | 11 +-- 1 files changed, 1 insertions(+), 10 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c index ee91f30..c6cc417 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c @@ -96,15 +96,6 @@ unsigned get_texture_image_size( return rowStride * height * depth; } -static unsigned is_pot(unsigned value) -{ - unsigned m; - - for (m = 1; m value; m *= 2) {} - - return value == m; -} - unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, unsigned width, unsigned tiling) { if (_mesa_is_format_compressed(format)) { @@ -112,7 +103,7 @@ unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, } else { unsigned row_align; - if (!is_pot(width)) { + if (!_mesa_is_pow_two(width)) { row_align = rmesa-texture_rect_row_align - 1; } else if (tiling) { unsigned tileWidth, tileHeight; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300g: move r300_transfer to separate files
Module: Mesa Branch: master Commit: 4012219f1f215cec9406be644b6b9d421bb5d8e4 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4012219f1f215cec9406be644b6b9d421bb5d8e4 Author: Marek Olšák mar...@gmail.com Date: Sat Feb 6 03:11:50 2010 +0100 r300g: move r300_transfer to separate files --- src/gallium/drivers/r300/Makefile|3 +- src/gallium/drivers/r300/SConscript |1 + src/gallium/drivers/r300/r300_screen.c | 74 +- src/gallium/drivers/r300/r300_screen.h | 16 + src/gallium/drivers/r300/r300_transfer.c | 101 ++ src/gallium/drivers/r300/r300_transfer.h | 60 ++ 6 files changed, 171 insertions(+), 84 deletions(-) diff --git a/src/gallium/drivers/r300/Makefile b/src/gallium/drivers/r300/Makefile index 1f69dae..61b54af 100644 --- a/src/gallium/drivers/r300/Makefile +++ b/src/gallium/drivers/r300/Makefile @@ -19,7 +19,8 @@ C_SOURCES = \ r300_state_invariant.c \ r300_vs.c \ r300_texture.c \ - r300_tgsi_to_rc.c + r300_tgsi_to_rc.c \ + r300_transfer.c LIBRARY_INCLUDES = \ -I$(TOP)/src/mesa/drivers/dri/r300/compiler \ diff --git a/src/gallium/drivers/r300/SConscript b/src/gallium/drivers/r300/SConscript index 183aa17..27b2e30 100644 --- a/src/gallium/drivers/r300/SConscript +++ b/src/gallium/drivers/r300/SConscript @@ -30,6 +30,7 @@ r300 = env.ConvenienceLibrary( 'r300_vs.c', 'r300_texture.c', 'r300_tgsi_to_rc.c', +'r300_transfer.c', ] + r300compiler) + r300compiler Export('r300') diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index d397a8e..a35be05 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -1,5 +1,6 @@ /* * Copyright 2008 Corbin Simpson mostawesomed...@gmail.com + * Copyright 2010 Marek Olšák mar...@gmail.com * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the Software), @@ -20,14 +21,13 @@ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include util/u_inlines.h #include util/u_format.h #include util/u_memory.h #include util/u_simple_screen.h #include r300_context.h -#include r300_screen.h #include r300_texture.h +#include r300_transfer.h #include radeon_winsys.h #include r300_winsys.h @@ -250,70 +250,6 @@ static boolean r300_is_format_supported(struct pipe_screen* screen, return retval == usage; } -static struct pipe_transfer* -r300_get_tex_transfer(struct pipe_screen *screen, - struct pipe_texture *texture, - unsigned face, unsigned level, unsigned zslice, - enum pipe_transfer_usage usage, unsigned x, unsigned y, - unsigned w, unsigned h) -{ -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 */ - -trans = CALLOC_STRUCT(r300_transfer); -if (trans) { -pipe_texture_reference(trans-transfer.texture, texture); -trans-transfer.x = x; -trans-transfer.y = y; -trans-transfer.width = w; -trans-transfer.height = h; -trans-transfer.stride = r300_texture_get_stride(rscreen, tex, level); -trans-transfer.usage = usage; -trans-transfer.zslice = zslice; -trans-transfer.face = face; - -trans-offset = offset; -} -return trans-transfer; -} - -static void -r300_tex_transfer_destroy(struct pipe_transfer *trans) -{ - pipe_texture_reference(trans-texture, NULL); - FREE(trans); -} - -static void* r300_transfer_map(struct pipe_screen* screen, - struct pipe_transfer* transfer) -{ -struct r300_texture* tex = (struct r300_texture*)transfer-texture; -char* map; -enum pipe_format format = tex-tex.format; - -map = pipe_buffer_map(screen, tex-buffer, - pipe_transfer_buffer_flags(transfer)); - -if (!map) { -return NULL; -} - -return map + r300_transfer(transfer)-offset + -transfer-y / util_format_get_blockheight(format) * transfer-stride + -transfer-x / util_format_get_blockwidth(format) * util_format_get_blocksize(format); -} - -static void r300_transfer_unmap(struct pipe_screen* screen, -struct pipe_transfer* transfer) -{ -struct r300_texture* tex = (struct r300_texture*)transfer-texture; -pipe_buffer_unmap(screen, tex-buffer); -} - static void r300_destroy_screen(struct pipe_screen* pscreen) { struct r300_screen* r300screen = r300_screen(pscreen); @@ -350,13 +286,11 @@ struct pipe_screen*
Mesa (master): r300g: add ability to tile/ detile textures using blit during transfers
Module: Mesa Branch: master Commit: 6c7fac846ef99cde5305cf1011b4570bd1901625 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6c7fac846ef99cde5305cf1011b4570bd1901625 Author: Marek Olšák mar...@gmail.com Date: Sun Feb 14 03:19:01 2010 +0100 r300g: add ability to tile/detile textures using blit during transfers --- src/gallium/drivers/r300/r300_context.c |2 + src/gallium/drivers/r300/r300_screen.h |6 + src/gallium/drivers/r300/r300_texture.c |5 +- src/gallium/drivers/r300/r300_transfer.c | 210 ++ src/gallium/drivers/r300/r300_transfer.h | 29 5 files changed, 197 insertions(+), 55 deletions(-) diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c index ec1c586..e43e088 100644 --- a/src/gallium/drivers/r300/r300_context.c +++ b/src/gallium/drivers/r300/r300_context.c @@ -159,6 +159,8 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen, if (!r300) return NULL; +r300screen-ctx = (struct pipe_context*)r300; + r300-winsys = radeon_winsys; r300-context.winsys = (struct pipe_winsys*)radeon_winsys; diff --git a/src/gallium/drivers/r300/r300_screen.h b/src/gallium/drivers/r300/r300_screen.h index 6d72fec..484bde6 100644 --- a/src/gallium/drivers/r300/r300_screen.h +++ b/src/gallium/drivers/r300/r300_screen.h @@ -28,6 +28,8 @@ #include r300_chipset.h +#define R300_TEXTURE_USAGE_TRANSFER PIPE_TEXTURE_USAGE_CUSTOM + struct radeon_winsys; struct r300_screen { @@ -36,6 +38,10 @@ struct r300_screen { struct radeon_winsys* radeon_winsys; +/* XXX This hack will be removed once texture transfers become part of + * pipe_context. */ +struct pipe_context* ctx; + /* Chipset capabilities */ struct r300_capabilities* caps; diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c index c0144f6..04e326e 100644 --- a/src/gallium/drivers/r300/r300_texture.c +++ b/src/gallium/drivers/r300/r300_texture.c @@ -725,9 +725,8 @@ static void r300_setup_flags(struct r300_texture* tex) } /* Create a new texture. */ -static struct pipe_texture* -r300_texture_create(struct pipe_screen* screen, -const struct pipe_texture* template) +static struct pipe_texture* r300_texture_create(struct pipe_screen* screen, + const struct pipe_texture* template) { struct r300_texture* tex = CALLOC_STRUCT(r300_texture); struct r300_screen* rscreen = r300_screen(screen); diff --git a/src/gallium/drivers/r300/r300_transfer.c b/src/gallium/drivers/r300/r300_transfer.c index fa48688..56a6976 100644 --- a/src/gallium/drivers/r300/r300_transfer.c +++ b/src/gallium/drivers/r300/r300_transfer.c @@ -29,6 +29,89 @@ #include util/u_memory.h #include util/u_format.h +struct r300_transfer { +/* Parent class */ +struct pipe_transfer transfer; + +/* Pipe context. */ +struct pipe_context *ctx; + +/* Parameters of get_tex_transfer. */ +unsigned x, y, level, zslice, face; + +/* Offset from start of buffer. */ +unsigned offset; + +/* Detiled texture. */ +struct r300_texture *detiled_texture; + +/* Transfer and format flags. */ +unsigned buffer_usage, render_target_usage; +}; + +/* Convenience cast wrapper. */ +static INLINE struct r300_transfer* +r300_transfer(struct pipe_transfer* transfer) +{ +return (struct r300_transfer*)transfer; +} + +/* Copy from a tiled texture to a detiled one. */ +static void r300_copy_from_tiled_texture(struct pipe_context *ctx, + struct r300_transfer *r300transfer) +{ +struct pipe_screen *screen = ctx-screen; +struct pipe_transfer *transfer = (struct pipe_transfer*)r300transfer; +struct pipe_texture *tex = transfer-texture; +struct pipe_surface *src, *dst; + +src = screen-get_tex_surface(screen, tex, r300transfer-face, + r300transfer-level, r300transfer-zslice, + PIPE_BUFFER_USAGE_GPU_READ | + PIPE_BUFFER_USAGE_PIXEL); + +dst = screen-get_tex_surface(screen, r300transfer-detiled_texture-tex, + 0, 0, 0, + PIPE_BUFFER_USAGE_GPU_WRITE | + PIPE_BUFFER_USAGE_PIXEL | + r300transfer-buffer_usage); + +ctx-surface_copy(ctx, dst, 0, 0, src, r300transfer-x, r300transfer-y, + transfer-width, transfer-height); + +pipe_surface_reference(src, NULL); +pipe_surface_reference(dst, NULL); +} + +/* Copy a detiled texture to a tiled one. */ +static void r300_copy_into_tiled_texture(struct pipe_context *ctx, + struct r300_transfer *r300transfer) +{ +struct pipe_screen *screen = ctx-screen; +struct pipe_transfer *transfer =
Mesa (master): r300g: enable micro- and macrotiling for all textures and renderbuffers
Module: Mesa Branch: master Commit: b37d63337596aabc543ea7ecfa82f0f9fdbade69 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b37d63337596aabc543ea7ecfa82f0f9fdbade69 Author: Marek Olšák mar...@gmail.com Date: Sun Feb 14 04:57:09 2010 +0100 r300g: enable micro- and macrotiling for all textures and renderbuffers --- src/gallium/drivers/r300/r300_texture.c | 39 +++ 1 files changed, 39 insertions(+), 0 deletions(-) diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c index 04e326e..0736155 100644 --- a/src/gallium/drivers/r300/r300_texture.c +++ b/src/gallium/drivers/r300/r300_texture.c @@ -724,6 +724,42 @@ static void r300_setup_flags(struct r300_texture* tex) !util_is_power_of_two(tex-tex.height0); } +static void r300_setup_tiling(struct pipe_screen *screen, + struct r300_texture *tex) +{ +enum pipe_format format = tex-tex.format; +boolean rv350_mode = r300_screen(screen)-caps-family = CHIP_FAMILY_RV350; + +if (util_format_is_compressed(format)) { +return; +} + +if (tex-tex.width0 == 1 || +tex-tex.height0 == 1) { +return; +} + +/* Set microtiling. */ +switch (util_format_get_blocksize(format)) { +case 1: +case 4: +tex-microtile = R300_BUFFER_TILED; +break; + +/* XXX Square-tiling doesn't work with kernel older than 2.6.34, + * XXX need to check the DRM version */ +/*case 2: +case 8: +tex-microtile = R300_BUFFER_SQUARETILED; +break;*/ +} + +/* Set macrotiling. */ +if (r300_texture_macro_switch(tex, 0, rv350_mode)) { +tex-macrotile = R300_BUFFER_TILED; +} +} + /* Create a new texture. */ static struct pipe_texture* r300_texture_create(struct pipe_screen* screen, const struct pipe_texture* template) @@ -741,6 +777,9 @@ static struct pipe_texture* r300_texture_create(struct pipe_screen* screen, tex-tex.screen = screen; r300_setup_flags(tex); +if (!(template-tex_usage R300_TEXTURE_USAGE_TRANSFER)) { +r300_setup_tiling(screen, tex); +} r300_setup_miptree(rscreen, tex); r300_setup_texture_state(rscreen, tex); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300g: disable macrotiling when the texture height is smaller than a macrotile
Module: Mesa Branch: master Commit: 57a1395ec3f8eb01af6cfea3fd6b5903dcc61720 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=57a1395ec3f8eb01af6cfea3fd6b5903dcc61720 Author: Marek Olšák mar...@gmail.com Date: Fri Feb 19 03:02:34 2010 +0100 r300g: disable macrotiling when the texture height is smaller than a macrotile Otherwise incorrect rendering occurs (no idea why). --- src/gallium/drivers/r300/r300_texture.c | 27 +-- 1 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c index 0736155..c0da339 100644 --- a/src/gallium/drivers/r300/r300_texture.c +++ b/src/gallium/drivers/r300/r300_texture.c @@ -617,18 +617,23 @@ static unsigned r300_texture_get_tile_size(struct r300_texture* tex, /* Return true if macrotiling should be enabled on the miplevel. */ static boolean r300_texture_macro_switch(struct r300_texture *tex, unsigned level, - boolean rv350_mode) + boolean rv350_mode, + int dim) { -unsigned tile_width, width; +unsigned tile, texdim; -tile_width = r300_texture_get_tile_size(tex, TILE_WIDTH, TRUE); -width = u_minify(tex-tex.width0, level); +tile = r300_texture_get_tile_size(tex, dim, TRUE); +if (dim == TILE_WIDTH) { +texdim = u_minify(tex-tex.width0, level); +} else { +texdim = u_minify(tex-tex.height0, level); +} /* See TX_FILTER1_n.MACRO_SWITCH. */ if (rv350_mode) { -return width = tile_width; +return texdim = tile; } else { -return width tile_width; +return texdim tile; } } @@ -692,9 +697,10 @@ static void r300_setup_miptree(struct r300_screen* screen, for (i = 0; i = base-last_level; i++) { /* Let's see if this miplevel can be macrotiled. */ -tex-mip_macrotile[i] = (tex-macrotile == R300_BUFFER_TILED - r300_texture_macro_switch(tex, i, rv350_mode)) ? - R300_BUFFER_TILED : R300_BUFFER_LINEAR; +tex-mip_macrotile[i] = +(tex-macrotile == R300_BUFFER_TILED + r300_texture_macro_switch(tex, i, rv350_mode, TILE_WIDTH)) ? + R300_BUFFER_TILED : R300_BUFFER_LINEAR; stride = r300_texture_get_stride(screen, tex, i); nblocksy = r300_texture_get_nblocksy(tex, i); @@ -755,7 +761,8 @@ static void r300_setup_tiling(struct pipe_screen *screen, } /* Set macrotiling. */ -if (r300_texture_macro_switch(tex, 0, rv350_mode)) { +if (r300_texture_macro_switch(tex, 0, rv350_mode, TILE_WIDTH) +r300_texture_macro_switch(tex, 0, rv350_mode, TILE_HEIGHT)) { tex-macrotile = R300_BUFFER_TILED; } } ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300g: fix DRM errors
Module: Mesa Branch: master Commit: 6b39abb63acba34f0f4f017f06b0c90da79e6e70 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6b39abb63acba34f0f4f017f06b0c90da79e6e70 Author: Marek Olšák mar...@gmail.com Date: Tue Feb 23 01:14:44 2010 +0100 r300g: fix DRM errors --- src/gallium/drivers/r300/r300_transfer.c |7 ++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/src/gallium/drivers/r300/r300_transfer.c b/src/gallium/drivers/r300/r300_transfer.c index 56a6976..ec89681 100644 --- a/src/gallium/drivers/r300/r300_transfer.c +++ b/src/gallium/drivers/r300/r300_transfer.c @@ -102,10 +102,15 @@ static void r300_copy_into_tiled_texture(struct pipe_context *ctx, PIPE_BUFFER_USAGE_GPU_WRITE | PIPE_BUFFER_USAGE_PIXEL); +/* XXX this flush prevents the following DRM error from occuring: + * [drm:radeon_cs_ioctl] *ERROR* Failed to parse relocation ! + * Reproducible with perf/copytex. */ +ctx-flush(ctx, 0, NULL); + ctx-surface_copy(ctx, dst, r300transfer-x, r300transfer-y, src, 0, 0, transfer-width, transfer-height); -/* XXX this flush fixes lots of regressions, not sure why */ +/* XXX this flush fixes a few piglit tests (e.g. glean/pixelFormats). */ ctx-flush(ctx, 0, NULL); pipe_surface_reference(src, NULL); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): radeon: handle compressed sRGB texture formats
Module: Mesa Branch: master Commit: ba196a8318af6217fece3777ea038539fea4b415 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba196a8318af6217fece3777ea038539fea4b415 Author: Maciej Cencora m.cenc...@gmail.com Date: Sun Mar 7 15:00:29 2010 +0100 radeon: handle compressed sRGB texture formats --- src/mesa/drivers/dri/radeon/radeon_texture.c |9 + 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c index 6a8e70d..3ccc711 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texture.c +++ b/src/mesa/drivers/dri/radeon/radeon_texture.c @@ -558,6 +558,15 @@ gl_format radeonChooseTextureFormat(GLcontext * ctx, case GL_COMPRESSED_SLUMINANCE_ALPHA: return MESA_FORMAT_SLA8; + case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: + return MESA_FORMAT_SRGB_DXT1; + case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: + return MESA_FORMAT_SRGBA_DXT1; + case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: + return MESA_FORMAT_SRGBA_DXT3; + case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: + return MESA_FORMAT_SRGBA_DXT5; + default: _mesa_problem(ctx, unexpected internalFormat 0x%x in %s, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): dri/nouveau: Check _ColorDrawBuffers[0] before emitting fb state.
Module: Mesa Branch: master Commit: 5befb6f810fb88ed1e51ec26b79b647cd15b1433 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5befb6f810fb88ed1e51ec26b79b647cd15b1433 Author: Francisco Jerez curroje...@riseup.net Date: Sun Mar 7 14:20:31 2010 +0100 dri/nouveau: Check _ColorDrawBuffers[0] before emitting fb state. --- src/mesa/drivers/dri/nouveau/nv04_state_fb.c |2 +- src/mesa/drivers/dri/nouveau/nv10_state_fb.c |2 +- src/mesa/drivers/dri/nouveau/nv20_state_fb.c |2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c index aad1e49..5e5e0c5 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c @@ -63,7 +63,7 @@ nv04_emit_framebuffer(GLcontext *ctx, int emit) return; /* Render target */ - if (fb-_NumColorDrawBuffers) { + if (fb-_ColorDrawBuffers[0]) { s = to_nouveau_renderbuffer( fb-_ColorDrawBuffers[0])-surface; diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c index 05c36b4..6bd383e 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c @@ -111,7 +111,7 @@ nv10_emit_framebuffer(GLcontext *ctx, int emit) } /* Render target */ - if (fb-_NumColorDrawBuffers) { + if (fb-_ColorDrawBuffers[0]) { s = to_nouveau_renderbuffer( fb-_ColorDrawBuffers[0])-surface; diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_fb.c b/src/mesa/drivers/dri/nouveau/nv20_state_fb.c index 869acd6..d638541 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_fb.c @@ -67,7 +67,7 @@ nv20_emit_framebuffer(GLcontext *ctx, int emit) return; /* Render target */ - if (fb-_NumColorDrawBuffers) { + if (fb-_ColorDrawBuffers[0]) { s = to_nouveau_renderbuffer( fb-_ColorDrawBuffers[0])-surface; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): dri/nv04: GL_EXT_secondary_color
Module: Mesa Branch: master Commit: 6a15edfed326a06f08ac63020dc9472e45d8a9e1 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6a15edfed326a06f08ac63020dc9472e45d8a9e1 Author: Andrew Randrianasulu rand...@mail.ru Date: Sun Mar 7 01:09:21 2010 + dri/nv04: GL_EXT_secondary_color Signed-off-by: Francisco Jerez curroje...@riseup.net --- src/mesa/drivers/dri/nouveau/nouveau_context.c | 10 ++ src/mesa/drivers/dri/nouveau/nv04_state_raster.c |8 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index e26ed36..502e012 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -43,19 +43,21 @@ #define need_GL_EXT_framebuffer_object #define need_GL_EXT_fog_coord +#define need_GL_EXT_secondary_color #include main/remap_helper.h static const struct dri_extension nouveau_extensions[] = { { GL_ARB_multitexture,NULL }, + { GL_ARB_texture_env_add, NULL }, { GL_ARB_texture_env_combine, NULL }, { GL_ARB_texture_env_dot3,NULL }, - { GL_ARB_texture_env_add, NULL }, - { GL_EXT_texture_lod_bias,NULL }, - { GL_EXT_framebuffer_object, GL_EXT_framebuffer_object_functions }, { GL_ARB_texture_mirrored_repeat, NULL }, - { GL_EXT_stencil_wrap,NULL }, { GL_EXT_fog_coord, GL_EXT_fog_coord_functions }, + { GL_EXT_framebuffer_object, GL_EXT_framebuffer_object_functions }, + { GL_EXT_secondary_color, GL_EXT_secondary_color_functions }, + { GL_EXT_stencil_wrap,NULL }, + { GL_EXT_texture_lod_bias,NULL }, { GL_NV_blend_square, NULL }, { GL_SGIS_generate_mipmap,NULL }, { NULL, NULL } diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c index 4314fc3..c191571 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c @@ -275,6 +275,10 @@ nv04_emit_blend(GLcontext *ctx, int emit) else blend |= NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_FLAT; + /* Secondary color */ + if (NEED_SECONDARY_COLOR(ctx)) + blend |= NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE; + /* Fog. */ if (ctx-Fog.Enabled) blend |= NV04_MULTITEX_TRIANGLE_BLEND_FOG_ENABLE; @@ -309,6 +313,10 @@ nv04_emit_blend(GLcontext *ctx, int emit) else blend |= get_texenv_mode(GL_MODULATE); + /* Secondary color */ + if (NEED_SECONDARY_COLOR(ctx)) + blend |= NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE; + /* Fog. */ if (ctx-Fog.Enabled) blend |= NV04_TEXTURED_TRIANGLE_BLEND_FOG_ENABLE; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): dri/nouveau: Trivially add GL_NV_blend_square
Module: Mesa Branch: master Commit: e64680bc1e36699096af5ade876b6cb0f5791ad0 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e64680bc1e36699096af5ade876b6cb0f5791ad0 Author: Andrew Randrianasulu rand...@mail.ru Date: Tue Mar 2 01:29:14 2010 + dri/nouveau: Trivially add GL_NV_blend_square Signed-off-by: Francisco Jerez curroje...@riseup.net --- src/mesa/drivers/dri/nouveau/nouveau_context.c |1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index 52185a2..e26ed36 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -56,6 +56,7 @@ static const struct dri_extension nouveau_extensions[] = { { GL_ARB_texture_mirrored_repeat, NULL }, { GL_EXT_stencil_wrap,NULL }, { GL_EXT_fog_coord, GL_EXT_fog_coord_functions }, + { GL_NV_blend_square, NULL }, { GL_SGIS_generate_mipmap,NULL }, { NULL, NULL } }; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): dri/nouveau: Fix nv[12]x color sum.
Module: Mesa Branch: master Commit: 75f52d1e5210944d7e92787c637285fd83533053 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=75f52d1e5210944d7e92787c637285fd83533053 Author: Francisco Jerez curroje...@riseup.net Date: Sun Mar 7 18:40:21 2010 +0100 dri/nouveau: Fix nv[12]x color sum. --- src/mesa/drivers/dri/nouveau/nouveau_state.c |1 + src/mesa/drivers/dri/nouveau/nv10_state_tnl.c |6 -- src/mesa/drivers/dri/nouveau/nv20_state_tnl.c |2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/nouveau/nouveau_state.c b/src/mesa/drivers/dri/nouveau/nouveau_state.c index e1871db..bc61045 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_state.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_state.c @@ -150,6 +150,7 @@ nouveau_enable(GLcontext *ctx, GLenum cap, GLboolean state) break; case GL_COLOR_SUM_EXT: context_dirty(ctx, FRAG); + context_dirty(ctx, LIGHT_MODEL); break; case GL_CULL_FACE: context_dirty(ctx, CULL_FACE); diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c index 6db14d8..406e24c 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c @@ -201,8 +201,10 @@ nv10_emit_light_model(GLcontext *ctx, int emit) BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1); OUT_RING(chan, ((m-LocalViewer ? NV10TCL_LIGHT_MODEL_LOCAL_VIEWER : 0) | - (m-ColorControl == GL_SEPARATE_SPECULAR_COLOR ? -NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR : 0))); + (NEED_SECONDARY_COLOR(ctx) ? +NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR : 0) | + (!ctx-Light.Enabled ctx-Fog.ColorSumEnabled ? +NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR : 0))); } static float diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c index 0d56606..43f8c72 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c @@ -158,7 +158,7 @@ nv20_emit_light_model(GLcontext *ctx, int emit) OUT_RING(chan, ((m-LocalViewer ? NV20TCL_LIGHT_MODEL_VIEWER_LOCAL : NV20TCL_LIGHT_MODEL_VIEWER_NONLOCAL) | - (m-ColorControl == GL_SEPARATE_SPECULAR_COLOR ? + (NEED_SECONDARY_COLOR(ctx) ? NV20TCL_LIGHT_MODEL_SEPARATE_SPECULAR : 0))); ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): dri/nouveau: Split big client buffers in the indexed case too.
Module: Mesa Branch: master Commit: ea027bda8e4a7cdd8f131e01ab4ff80d6c6a3ab7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea027bda8e4a7cdd8f131e01ab4ff80d6c6a3ab7 Author: Francisco Jerez curroje...@riseup.net Date: Sun Mar 7 19:12:27 2010 +0100 dri/nouveau: Split big client buffers in the indexed case too. --- src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c |7 +++ 1 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c index 69a9b96..a365b97 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c @@ -281,14 +281,13 @@ vbo_maybe_split(GLcontext *ctx, const struct gl_client_array **arrays, int stride; /* Try to keep client buffers smaller than the scratch BOs. */ - if (!ib render-mode == VBO + if (render-mode == VBO (stride = get_max_client_stride(ctx))) vert_avail = MIN2(vert_avail, RENDER_SCRATCH_SIZE / stride); - - if ((ib ib-count idx_avail) || - (!ib max_index - min_index vert_avail)) { + if (max_index - min_index vert_avail || + (ib ib-count idx_avail)) { struct split_limits limits = { .max_verts = vert_avail, .max_indices = idx_avail, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300g: remove unnecessary state emissions and clean up
Module: Mesa Branch: master Commit: 6abe6145fb3b642fc2ae1d6ad2cc9de045efe0cb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6abe6145fb3b642fc2ae1d6ad2cc9de045efe0cb Author: Marek Olšák mar...@gmail.com Date: Mon Mar 8 04:31:03 2010 +0100 r300g: remove unnecessary state emissions and clean up --- src/gallium/drivers/r300/r300_context.h |2 + src/gallium/drivers/r300/r300_emit.c|2 +- src/gallium/drivers/r300/r300_state.c | 37 +++--- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h index 0d1518a..8c52d88 100644 --- a/src/gallium/drivers/r300/r300_context.h +++ b/src/gallium/drivers/r300/r300_context.h @@ -368,6 +368,8 @@ struct r300_context { boolean polygon_offset_enabled; /* Z buffer bit depth. */ uint32_t zbuffer_bpp; +/* Whether scissor is enabled. */ +boolean scissor_enabled; }; /* Convenience cast wrapper. */ diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index a1d31d5..51fc590 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -675,7 +675,7 @@ void r300_emit_scissor_state(struct r300_context* r300, maxx = fb-width; maxy = fb-height; -if (((struct r300_rs_state*)r300-rs_state.state)-rs.scissor) { +if (r300-scissor_enabled) { minx = MAX2(minx, scissor-minx); miny = MAX2(miny, scissor-miny); maxx = MIN2(maxx, scissor-maxx); diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c index de3ee0e..31259b5 100644 --- a/src/gallium/drivers/r300/r300_state.c +++ b/src/gallium/drivers/r300/r300_state.c @@ -571,6 +571,7 @@ static void { struct r300_context* r300 = r300_context(pipe); struct r300_screen* r300screen = r300_screen(pipe-screen); +struct pipe_framebuffer_state *old_state = r300-fb_state.state; unsigned max_width, max_height; uint32_t zbuffer_bpp = 0; @@ -595,11 +596,24 @@ static void return; } - if (r300-draw) { draw_flush(r300-draw); } +r300-fb_state.dirty = TRUE; + +/* If nr_cbufs is changed from zero to non-zero or vice versa... */ +if (!!old_state-nr_cbufs != !!state-nr_cbufs) { +r300-blend_state.dirty = TRUE; +} +/* If zsbuf is set from NULL to non-NULL or vice versa.. */ +if (!!old_state-zsbuf != !!state-zsbuf) { +r300-dsa_state.dirty = TRUE; +} +if (!r300-scissor_enabled) { +r300-scissor_state.dirty = TRUE; +} + memcpy(r300-fb_state.state, state, sizeof(struct pipe_framebuffer_state)); r300-fb_state.size = (10 * state-nr_cbufs) + (2 * (4 - state-nr_cbufs)) + @@ -607,11 +621,6 @@ static void r300_fb_update_tiling_flags(r300, r300-fb_state.state, state); -/* XXX wait what */ -r300-blend_state.dirty = TRUE; -r300-dsa_state.dirty = TRUE; -r300-fb_state.dirty = TRUE; -r300-scissor_state.dirty = TRUE; /* Polygon offset depends on the zbuffer bit depth. */ if (state-zsbuf r300-polygon_offset_enabled) { @@ -806,6 +815,7 @@ static void r300_bind_rs_state(struct pipe_context* pipe, void* state) { struct r300_context* r300 = r300_context(pipe); struct r300_rs_state* rs = (struct r300_rs_state*)state; +boolean scissor_was_enabled = r300-scissor_enabled; if (r300-draw) { draw_flush(r300-draw); @@ -814,20 +824,17 @@ static void r300_bind_rs_state(struct pipe_context* pipe, void* state) if (rs) { r300-polygon_offset_enabled = rs-rs.offset_cw || rs-rs.offset_ccw; +r300-scissor_enabled = rs-rs.scissor; } else { r300-polygon_offset_enabled = FALSE; +r300-scissor_enabled = FALSE; } UPDATE_STATE(state, r300-rs_state); r300-rs_state.size = 17 + (r300-polygon_offset_enabled ? 5 : 0); -/* XXX Why is this still needed, dammit!? */ -r300-scissor_state.dirty = TRUE; -r300-viewport_state.dirty = TRUE; - -/* XXX Clean these up when we move to atom emits */ -if (r300-fs r300-fs-inputs.wpos != ATTR_UNUSED) { -r300-dirty_state |= R300_NEW_FRAGMENT_SHADER_CONSTANTS; +if (scissor_was_enabled != r300-scissor_enabled) { +r300-scissor_state.dirty = TRUE; } } @@ -972,7 +979,9 @@ static void r300_set_scissor_state(struct pipe_context* pipe, memcpy(r300-scissor_state.state, state, sizeof(struct pipe_scissor_state)); -r300-scissor_state.dirty = TRUE; +if (r300-scissor_enabled) { +r300-scissor_state.dirty = TRUE; +} } static void r300_set_viewport_state(struct pipe_context* pipe, ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (7.8): st/vega: Fix OpenVG demo segfaults.
Module: Mesa Branch: 7.8 Commit: ee6fbf8d2f4718452c36366a08aa798cdda45ace URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ee6fbf8d2f4718452c36366a08aa798cdda45ace Author: Chia-I Wu o...@lunarg.com Date: Wed Mar 3 23:51:13 2010 +0800 st/vega: Fix OpenVG demo segfaults. When the paint is color, paint_bind_samplers binds a dummy sampler without a texture. It causes demos requiring a sampler (those use a mask or an image) to crash. --- src/gallium/state_trackers/vega/paint.c |3 --- 1 files changed, 0 insertions(+), 3 deletions(-) diff --git a/src/gallium/state_trackers/vega/paint.c b/src/gallium/state_trackers/vega/paint.c index caf0c14..cdb87d3 100644 --- a/src/gallium/state_trackers/vega/paint.c +++ b/src/gallium/state_trackers/vega/paint.c @@ -639,9 +639,6 @@ VGint paint_bind_samplers(struct vg_paint *paint, struct pipe_sampler_state **sa } break; default: - samplers[0] = paint-pattern.sampler; /* dummy */ - textures[0] = 0; - return 0; break; } return 0; ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit
Mesa (master): r300g: fix updating the tiling flags for the framebuffer state
Module: Mesa Branch: master Commit: 9860f652e271d03672ec3e5f0e379170953a1e56 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9860f652e271d03672ec3e5f0e379170953a1e56 Author: Marek Olšák mar...@gmail.com Date: Mon Mar 8 04:38:16 2010 +0100 r300g: fix updating the tiling flags for the framebuffer state --- src/gallium/drivers/r300/r300_state.c |5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c index 31259b5..8c9f604 100644 --- a/src/gallium/drivers/r300/r300_state.c +++ b/src/gallium/drivers/r300/r300_state.c @@ -614,14 +614,13 @@ static void r300-scissor_state.dirty = TRUE; } +r300_fb_update_tiling_flags(r300, r300-fb_state.state, state); + memcpy(r300-fb_state.state, state, sizeof(struct pipe_framebuffer_state)); r300-fb_state.size = (10 * state-nr_cbufs) + (2 * (4 - state-nr_cbufs)) + (state-zsbuf ? 10 : 0) + 8; -r300_fb_update_tiling_flags(r300, r300-fb_state.state, state); - - /* Polygon offset depends on the zbuffer bit depth. */ if (state-zsbuf r300-polygon_offset_enabled) { switch (util_format_get_blocksize(state-zsbuf-texture-format)) { ___ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit