[Mesa-dev] [PATCH 03/23] radeonsi: move r600_test_dma.c into si_test_dma.c

Eric Engestrom eric.engestrom at imgtec.com
Wed Nov 29 15:06:48 UTC 2017


On Tuesday, 2017-11-28 22:38:31 +0100, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> ---
>  src/gallium/drivers/radeon/Makefile.sources        |  1 -
>  src/gallium/drivers/radeon/r600_pipe_common.h      |  3 ---
>  src/gallium/drivers/radeonsi/Makefile.sources      |  1 +
>  src/gallium/drivers/radeonsi/meson.build           |  1 +
>  src/gallium/drivers/radeonsi/si_pipe.c             |  2 +-
>  src/gallium/drivers/radeonsi/si_pipe.h             |  3 +++
>  .../r600_test_dma.c => radeonsi/si_test_dma.c}     | 28 +++++++++++-----------
>  7 files changed, 20 insertions(+), 19 deletions(-)
>  rename src/gallium/drivers/{radeon/r600_test_dma.c => radeonsi/si_test_dma.c} (93%)
> 
> diff --git a/src/gallium/drivers/radeon/Makefile.sources b/src/gallium/drivers/radeon/Makefile.sources
> index ebb194c..b756d72 100644
> --- a/src/gallium/drivers/radeon/Makefile.sources
> +++ b/src/gallium/drivers/radeon/Makefile.sources
> @@ -1,20 +1,19 @@
>  C_SOURCES := \
>  	r600_buffer_common.c \
>  	r600_cs.h \
>  	r600_gpu_load.c \
>  	r600_perfcounter.c \
>  	r600_pipe_common.c \
>  	r600_pipe_common.h \
>  	r600_query.c \
>  	r600_query.h \
> -	r600_test_dma.c \

src/gallium/drivers/radeon/meson.build needs the same

>  	r600_texture.c \
>  	radeon_uvd.c \
>  	radeon_uvd.h \
>  	radeon_vcn_dec.c \
>  	radeon_vcn_dec.h \
>  	radeon_vcn_enc_1_2.c \
>  	radeon_vcn_enc.c \
>  	radeon_vcn_enc.h \
>  	radeon_vce_40_2_2.c \
>  	radeon_vce_50.c \
> diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h
> index 36df0c4..a1ec0b8 100644
> --- a/src/gallium/drivers/radeon/r600_pipe_common.h
> +++ b/src/gallium/drivers/radeon/r600_pipe_common.h
> @@ -713,23 +713,20 @@ unsigned si_end_counter(struct r600_common_screen *rscreen, unsigned type,
>  
>  /* r600_perfcounters.c */
>  void si_perfcounters_destroy(struct r600_common_screen *rscreen);
>  
>  /* r600_query.c */
>  void si_init_screen_query_functions(struct r600_common_screen *rscreen);
>  void si_init_query_functions(struct r600_common_context *rctx);
>  void si_suspend_queries(struct r600_common_context *ctx);
>  void si_resume_queries(struct r600_common_context *ctx);
>  
> -/* r600_test_dma.c */
> -void si_test_dma(struct r600_common_screen *rscreen);
> -
>  /* r600_texture.c */
>  bool si_prepare_for_dma_blit(struct r600_common_context *rctx,
>  			     struct r600_texture *rdst,
>  			     unsigned dst_level, unsigned dstx,
>  			     unsigned dsty, unsigned dstz,
>  			     struct r600_texture *rsrc,
>  			     unsigned src_level,
>  			     const struct pipe_box *src_box);
>  void si_texture_get_fmask_info(struct r600_common_screen *rscreen,
>  			       struct r600_texture *rtex,
> diff --git a/src/gallium/drivers/radeonsi/Makefile.sources b/src/gallium/drivers/radeonsi/Makefile.sources
> index 18cd7d1..10c99f6 100644
> --- a/src/gallium/drivers/radeonsi/Makefile.sources
> +++ b/src/gallium/drivers/radeonsi/Makefile.sources
> @@ -29,11 +29,12 @@ C_SOURCES := \
>  	si_shader_tgsi_mem.c \
>  	si_shader_tgsi_setup.c \
>  	si_state.c \
>  	si_state_binning.c \
>  	si_state_draw.c \
>  	si_state_msaa.c \
>  	si_state_shaders.c \
>  	si_state_streamout.c \
>  	si_state_viewport.c \
>  	si_state.h \
> +	si_test_dma.c \
>  	si_uvd.c
> diff --git a/src/gallium/drivers/radeonsi/meson.build b/src/gallium/drivers/radeonsi/meson.build
> index a04ea4c..7eae9d6 100644
> --- a/src/gallium/drivers/radeonsi/meson.build
> +++ b/src/gallium/drivers/radeonsi/meson.build
> @@ -45,20 +45,21 @@ files_libradeonsi = files(
>    'si_shader_tgsi_mem.c',
>    'si_shader_tgsi_setup.c',
>    'si_state.c',
>    'si_state_binning.c',
>    'si_state_draw.c',
>    'si_state_msaa.c',
>    'si_state_shaders.c',
>    'si_state_streamout.c',
>    'si_state_viewport.c',
>    'si_state.h',
> +  'si_test_dma.c',
>    'si_uvd.c',
>  )
>  
>  si_driinfo_h = custom_target(
>    'si_driinfo.h',
>    input : files(
>      '../../../util/merge_driinfo.py',
>      '../../auxiliary/pipe-loader/driinfo_gallium.h', 'driinfo_radeonsi.h'
>    ),
>    output : 'si_driinfo.h',
> diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
> index f0a9ad1..bf28677 100644
> --- a/src/gallium/drivers/radeonsi/si_pipe.c
> +++ b/src/gallium/drivers/radeonsi/si_pipe.c
> @@ -1151,19 +1151,19 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws,
>  
>  	for (i = 0; i < num_compiler_threads; i++)
>  		sscreen->tm[i] = si_create_llvm_target_machine(sscreen);
>  	for (i = 0; i < num_compiler_threads_lowprio; i++)
>  		sscreen->tm_low_priority[i] = si_create_llvm_target_machine(sscreen);
>  
>  	/* Create the auxiliary context. This must be done last. */
>  	sscreen->b.aux_context = si_create_context(&sscreen->b.b, 0);
>  
>  	if (sscreen->b.debug_flags & DBG(TEST_DMA))
> -		si_test_dma(&sscreen->b);
> +		si_test_dma(sscreen);
>  
>  	if (sscreen->b.debug_flags & (DBG(TEST_VMFAULT_CP) |
>  				      DBG(TEST_VMFAULT_SDMA) |
>  				      DBG(TEST_VMFAULT_SHADER)))
>  		si_test_vmfault(sscreen);
>  
>  	return &sscreen->b.b;
>  }
> diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h
> index 820e5b2..c0846f4 100644
> --- a/src/gallium/drivers/radeonsi/si_pipe.h
> +++ b/src/gallium/drivers/radeonsi/si_pipe.h
> @@ -633,20 +633,23 @@ void si_context_gfx_flush(void *context, unsigned flags,
>  			  struct pipe_fence_handle **fence);
>  void si_begin_new_cs(struct si_context *ctx);
>  void si_need_cs_space(struct si_context *ctx);
>  
>  /* si_compute.c */
>  void si_init_compute_functions(struct si_context *sctx);
>  
>  /* si_perfcounters.c */
>  void si_init_perfcounters(struct si_screen *screen);
>  
> +/* si_test_dma.c */
> +void si_test_dma(struct si_screen *sscreen);
> +
>  /* si_uvd.c */
>  struct pipe_video_codec *si_uvd_create_decoder(struct pipe_context *context,
>  					       const struct pipe_video_codec *templ);
>  
>  struct pipe_video_buffer *si_video_buffer_create(struct pipe_context *pipe,
>  						 const struct pipe_video_buffer *tmpl);
>  
>  /* si_viewport.c */
>  void si_update_vs_viewport_state(struct si_context *ctx);
>  void si_init_viewport_functions(struct si_context *ctx);
> diff --git a/src/gallium/drivers/radeon/r600_test_dma.c b/src/gallium/drivers/radeonsi/si_test_dma.c
> similarity index 93%
> rename from src/gallium/drivers/radeon/r600_test_dma.c
> rename to src/gallium/drivers/radeonsi/si_test_dma.c
> index f7002bc..beb3be5 100644
> --- a/src/gallium/drivers/radeon/r600_test_dma.c
> +++ b/src/gallium/drivers/radeonsi/si_test_dma.c
> @@ -17,21 +17,21 @@
>   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
>   * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
>   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
>   * SOFTWARE.
>   *
>   */
>  
>  /* This file implements randomized SDMA texture blit tests. */
>  
> -#include "r600_pipe_common.h"
> +#include "si_pipe.h"
>  #include "util/u_surface.h"
>  #include "util/rand_xor.h"
>  
>  static uint64_t seed_xorshift128plus[2];
>  
>  #define RAND_NUM_SIZE 8
>  
>  /* The GPU blits are emulated on the CPU using these CPU textures. */
>  
>  struct cpu_texture {
> @@ -128,24 +128,24 @@ static enum pipe_format get_format_from_bpp(int bpp)
>  	case 8:
>  		return PIPE_FORMAT_R32G32_UINT;
>  	case 16:
>  		return PIPE_FORMAT_R32G32B32A32_UINT;
>  	default:
>  		assert(0);
>  		return PIPE_FORMAT_NONE;
>  	}
>  }
>  
> -static const char *array_mode_to_string(struct r600_common_screen *rscreen,
> +static const char *array_mode_to_string(struct si_screen *sscreen,
>  					struct radeon_surf *surf)
>  {
> -	if (rscreen->chip_class >= GFX9) {
> +	if (sscreen->b.chip_class >= GFX9) {
>  		/* TODO */
>  		return "       UNKNOWN";
>  	} else {
>  		switch (surf->u.legacy.level[0].mode) {
>  		case RADEON_SURF_MODE_LINEAR_ALIGNED:
>  			return "LINEAR_ALIGNED";
>  		case RADEON_SURF_MODE_1D:
>  			return "1D_TILED_THIN1";
>  		case RADEON_SURF_MODE_2D:
>  			return "2D_TILED_THIN1";
> @@ -164,25 +164,25 @@ static unsigned generate_max_tex_side(unsigned max_tex_side)
>  		return max_tex_side;
>  	case 1:
>  		/* Try to hit 1D tiling in 1/4 of the cases. */
>  		return 128;
>  	default:
>  		/* Try to hit common sizes in 2/4 of the cases. */
>  		return 2048;
>  	}
>  }
>  
> -void si_test_dma(struct r600_common_screen *rscreen)
> +void si_test_dma(struct si_screen *sscreen)
>  {
> -	struct pipe_screen *screen = &rscreen->b;
> +	struct pipe_screen *screen = &sscreen->b.b;
>  	struct pipe_context *ctx = screen->context_create(screen, NULL, 0);
> -	struct r600_common_context *rctx = (struct r600_common_context*)ctx;
> +	struct si_context *sctx = (struct si_context*)ctx;
>  	uint64_t max_alloc_size;
>  	unsigned i, iterations, num_partial_copies, max_levels, max_tex_side;
>  	unsigned num_pass = 0, num_fail = 0;
>  
>  	max_levels = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS);
>  	max_tex_side = 1 << (max_levels - 1);
>  
>  	/* Max 128 MB allowed for both textures. */
>  	max_alloc_size = 128 * 1024 * 1024;
>  
> @@ -276,44 +276,44 @@ void si_test_dma(struct r600_common_screen *rscreen)
>  		assert(src);
>  		assert(dst);
>  		rdst = (struct r600_texture*)dst;
>  		rsrc = (struct r600_texture*)src;
>  		alloc_cpu_texture(&src_cpu, &tsrc, bpp);
>  		alloc_cpu_texture(&dst_cpu, &tdst, bpp);
>  
>  		printf("%4u: dst = (%5u x %5u x %u, %s), "
>  		       " src = (%5u x %5u x %u, %s), bpp = %2u, ",
>  		       i, tdst.width0, tdst.height0, tdst.array_size,
> -		       array_mode_to_string(rscreen, &rdst->surface),
> +		       array_mode_to_string(sscreen, &rdst->surface),
>  		       tsrc.width0, tsrc.height0, tsrc.array_size,
> -		       array_mode_to_string(rscreen, &rsrc->surface), bpp);
> +		       array_mode_to_string(sscreen, &rsrc->surface), bpp);
>  		fflush(stdout);
>  
>  		/* set src pixels */
>  		set_random_pixels(ctx, src, &src_cpu);
>  
>  		/* clear dst pixels */
> -		rctx->clear_buffer(ctx, dst, 0, rdst->surface.surf_size, 0, true);
> +		sctx->b.clear_buffer(ctx, dst, 0, rdst->surface.surf_size, 0, true);
>  		memset(dst_cpu.ptr, 0, dst_cpu.layer_stride * tdst.array_size);
>  
>  		/* preparation */
>  		max_width = MIN2(tsrc.width0, tdst.width0);
>  		max_height = MIN2(tsrc.height0, tdst.height0);
>  		max_depth = MIN2(tsrc.array_size, tdst.array_size);
>  
>  		num = do_partial_copies ? num_partial_copies : 1;
>  		for (j = 0; j < num; j++) {
>  			int width, height, depth;
>  			int srcx, srcy, srcz, dstx, dsty, dstz;
>  			struct pipe_box box;
> -			unsigned old_num_draw_calls = rctx->num_draw_calls;
> -			unsigned old_num_dma_calls = rctx->num_dma_calls;
> +			unsigned old_num_draw_calls = sctx->b.num_draw_calls;
> +			unsigned old_num_dma_calls = sctx->b.num_dma_calls;
>  
>  			if (!do_partial_copies) {
>  				/* copy whole src to dst */
>  				width = max_width;
>  				height = max_height;
>  				depth = max_depth;
>  
>  				srcx = srcy = srcz = dstx = dsty = dstz = 0;
>  			} else {
>  				/* random sub-rectangle copies from src to dst */
> @@ -354,25 +354,25 @@ void si_test_dma(struct r600_common_screen *rscreen)
>  				    !rdst->surface.is_linear &&
>  				    rand() % 4 == 0) {
>  					srcx = 0;
>  					srcy = 0;
>  					srcz = 0;
>  				}
>  			}
>  
>  			/* GPU copy */
>  			u_box_3d(srcx, srcy, srcz, width, height, depth, &box);
> -			rctx->dma_copy(ctx, dst, 0, dstx, dsty, dstz, src, 0, &box);
> +			sctx->b.dma_copy(ctx, dst, 0, dstx, dsty, dstz, src, 0, &box);
>  
>  			/* See which engine was used. */
> -			gfx_blits += rctx->num_draw_calls > old_num_draw_calls;
> -			dma_blits += rctx->num_dma_calls > old_num_dma_calls;
> +			gfx_blits += sctx->b.num_draw_calls > old_num_draw_calls;
> +			dma_blits += sctx->b.num_dma_calls > old_num_dma_calls;
>  
>  			/* CPU copy */
>  			util_copy_box(dst_cpu.ptr, tdst.format, dst_cpu.stride,
>  				      dst_cpu.layer_stride,
>  				      dstx, dsty, dstz, width, height, depth,
>  				      src_cpu.ptr, src_cpu.stride,
>  				      src_cpu.layer_stride,
>  				      srcx, srcy, srcz);
>  		}
>  
> -- 
> 2.7.4
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list