소스 검색

r600: reduce number of cache flushes

We don't need to flush so often. Next step
would be to move the flushing to the drm and only
flush after each command buffer rather than each
draw.
tags/7.8-rc1
Alex Deucher 15 년 전
부모
커밋
339d42b4e6
2개의 변경된 파일3개의 추가작업 그리고 3개의 파일을 삭제
  1. 1
    0
      src/mesa/drivers/dri/r600/r600_blit.c
  2. 2
    3
      src/mesa/drivers/dri/r600/r700_render.c

+ 1
- 0
src/mesa/drivers/dri/r600/r600_blit.c 파일 보기

@@ -1652,6 +1652,7 @@ unsigned r600_blit(GLcontext *ctx,
CB_ACTION_ENA_bit | (1 << (id + 6)));

/* 5 */
/* XXX drm should handle this in fence submit */
r700WaitForIdleClean(context);

radeonFlush(ctx);

+ 2
- 3
src/mesa/drivers/dri/r600/r700_render.c 파일 보기

@@ -115,8 +115,6 @@ void r700Start3D(context_t *context)
END_BATCH();

COMMIT_BATCH();

r700WaitForIdleClean(context);
}

GLboolean r700SyncSurf(context_t *context,
@@ -421,7 +419,7 @@ static void r700RunRenderPrimitiveImmediate(GLcontext * ctx, int start, int end,
}

/* start 3d, idle, cb/db flush */
#define PRE_EMIT_STATE_BUFSZ 10 + 5 + 18
#define PRE_EMIT_STATE_BUFSZ 5 + 5 + 18

static GLuint r700PredictRenderSize(GLcontext* ctx,
const struct _mesa_prim *prim,
@@ -934,6 +932,7 @@ static GLboolean r700TryDrawPrims(GLcontext *ctx,
radeon_debug_remove_indent();

/* Flush render op cached for last several quads. */
/* XXX drm should handle this in fence submit */
r700WaitForIdleClean(context);

rrb = radeon_get_colorbuffer(&context->radeon);

Loading…
취소
저장