summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2010-04-11 16:14:29 +0200
committerJerome Glisse <jglisse@redhat.com>2010-04-11 16:14:29 +0200
commitdfaba1972382ae8e614fa8a5a56661edd90d6bf5 (patch)
tree3b9af69f076b6c294626a9a2661d2fdefaebb275
parent7400382c0979833697f8ff688f0e8701d3ce532e (diff)
radeondb: remove dead code
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
-rw-r--r--src/r600_scheduler.c243
1 files changed, 0 insertions, 243 deletions
diff --git a/src/r600_scheduler.c b/src/r600_scheduler.c
deleted file mode 100644
index 50cf50f..0000000
--- a/src/r600_scheduler.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright 2010 Jerome Glisse <glisse@freedesktop.org>
- *
- * 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
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHOR(S) AND/OR THEIR SUPPLIERS 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.
- *
- * Authors:
- * Jerome Glisse
- */
-#include "r600.h"
-#include "r600d.h"
-
-/* state creation functions prototype */
-int r600_framebuffer_emit(struct r600_winsys *rdev, struct r600_atom *atom, void *data, struct radeon_ib *ib);
-int r600_framebuffer_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-int r600_cb_cntl_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-int r600_rasterizer_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-int r600_viewport_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-int r600_scissor_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-int r600_blend_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-int r600_constants_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-int r600_dsa_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-int r600_vs_shader_emit(struct r600_winsys *rdev, struct r600_atom *atom, void *data, struct radeon_ib *ib);
-int r600_vs_shader_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-int r600_fs_shader_emit(struct r600_winsys *rdev, struct r600_atom *atom, void *data, struct radeon_ib *ib);
-int r600_fs_shader_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-int r600_shader_resource_emit(struct r600_winsys *rdev, struct r600_atom *atom, void *data, struct radeon_ib *ib);
-int r600_shader_resource_create(struct r600_winsys *rdev, struct r600_atom *atom, void *data);
-
-/*
- * helpers functions
- */
-static void r600_emit_flush(struct r600_winsys *rdev,
- struct radeon_ib *ib,
- struct radeon_bo *bo,
- u32 flags)
-{
- ib->ptr[ib->cpkts++] = PKT3(PKT3_SURFACE_SYNC, 3);
- ib->ptr[ib->cpkts++] = flags;
- ib->ptr[ib->cpkts++] = bo->size >> 8;
- ib->ptr[ib->cpkts++] = 0x00000000;
- ib->ptr[ib->cpkts++] = 0x0000000A;
- ib->ptr[ib->cpkts++] = PKT3(PKT3_NOP, 0);
- ib->ptr[ib->cpkts++] = radeon_ib_reloc(ib, bo, RADEON_GEM_DOMAIN_VRAM |
- RADEON_GEM_DOMAIN_GTT);
-}
-
-void r600_atom_flush_add(struct r600_work *batch, struct radeon_bo *bo, u32 flags)
-{
- int i;
-
- for (i = 0; i < batch->nflush; i++) {
- if (batch->flush[i].bo == bo) {
- batch->flush[i].flags |= flags;
- return;
- }
- }
- batch->flush[batch->nflush].bo = bo;
- batch->flush[batch->nflush].flags = flags;
- batch->nflush++;
-}
-
-/*
- * r600_scheduler
- */
-static void r600_scheduler_clear(struct r600_winsys *rw, struct r600_scheduler *scheduler)
-{
- int i, j;
-
- for (i = 0; i < scheduler->nwork; i++) {
- for (j = 0; j < R600_BATCH_NATOMS; j++) {
- r600_atom_destroy(scheduler->work[i].atoms[j]);
- }
- }
- scheduler->ib->crelocs = 0;
- scheduler->ib->cpkts = 0;
- scheduler->nwork = 0;
- r700_scheduler_states_default(rw, scheduler);
- scheduler->npkts = scheduler->ib->cpkts;
-}
-
-int r600_scheduler_flush(struct r600_winsys *rw)
-{
- struct r600_scheduler *scheduler = &rw->scheduler;
- int r, i, j;
-
- for (i = 0; i < scheduler->nwork; i++) {
- for (j = 0; j < scheduler->work[i].nflush; j++) {
- r600_emit_flush(rw, scheduler->ib,
- scheduler->work[i].flush[j].bo,
- scheduler->work[i].flush[j].flags);
- }
- for (j = 0; j < scheduler->work[i].nemit_atoms; j++) {
- r = scheduler->work[i].emit_atoms[j]->emit(rw,
- scheduler->work[i].emit_atoms[j],
- &scheduler->work[i],
- scheduler->ib);
- if (r)
- goto out_err;
- }
- r = r600_draw_cmd_emit(scheduler->ib, &scheduler->work[i].drm);
- /* flush + wait until */
- scheduler->ib->ptr[scheduler->ib->cpkts++] = PKT3(PKT3_EVENT_WRITE, 0);
- scheduler->ib->ptr[scheduler->ib->cpkts++] = 0x00000016;
- scheduler->ib->ptr[scheduler->ib->cpkts++] = PKT3(PKT3_SET_CONFIG_REG, 1);
- scheduler->ib->ptr[scheduler->ib->cpkts++] = 0x00000010;
- scheduler->ib->ptr[scheduler->ib->cpkts++] = 0x00028000;
- }
- printf("ib %d dw\n", scheduler->ib->cpkts);
- r = radeon_ib_schedule(rw, scheduler->ib);
-out_err:
- /* FIXME helper function */
- scheduler->ib->cpkts = 0;
- scheduler->ib->crelocs = 0;
- r600_scheduler_clear(rw, scheduler);
- return r;
-}
-
-int r600_scheduler_queue(struct r600_winsys *rw, struct r600_request *rq)
-{
- struct r600_batch *batch = rq->data;
- struct r600_work *rbatch;
- struct r600_scheduler *scheduler = &rw->scheduler;
- int r, i, j;
-
- if (scheduler->nwork >= R600_MAX_WORK) {
- r = r600_scheduler_flush(rw);
- if (r)
- return r;
- }
- rbatch = &scheduler->work[scheduler->nwork];
- memset(rbatch, 0, sizeof(struct r600_work));
- i = 0;
- if (batch->blend == NULL || batch->cb_cntl == NULL ||
- batch->rasterizer == NULL || batch->viewport == NULL ||
- batch->framebuffer == NULL || batch->dsa == NULL ||
- batch->vs_shader == NULL || batch->fs_shader == NULL ||
- batch->scissor == NULL || batch->vs_resource == NULL) {
- free(rbatch);
- fprintf(stderr, "invalid batch\n");
- return -EINVAL;
- }
- rbatch->atoms[i++] = batch->blend;
- rbatch->atoms[i++] = batch->cb_cntl;
- rbatch->atoms[i++] = batch->rasterizer;
- rbatch->atoms[i++] = batch->viewport;
- rbatch->atoms[i++] = batch->scissor;
- rbatch->atoms[i++] = batch->vs_shader;
- rbatch->atoms[i++] = batch->fs_shader;
- rbatch->atoms[i++] = batch->dsa;
- rbatch->atoms[i++] = batch->vs_constants;
- rbatch->atoms[i++] = batch->ps_constants;
- rbatch->atoms[i++] = batch->vs_resource;
- rbatch->atoms[i++] = batch->framebuffer;
- for (i = 0; i < R600_BATCH_NATOMS; i++) {
- r600_atom_ref(rbatch->atoms[i]);
- }
- memcpy(&rbatch->drm, batch, sizeof(struct r600_batch));
-reprocess:
- rbatch->nflush = 0;
- rbatch->npkts = 0;
- /* flush + wait until = 5dw */
- rbatch->npkts += 5;
- rbatch->npkts += r600_draw_cmd_size(batch);
- for (i = 0; i < R600_BATCH_NATOMS; i++) {
- if (rbatch->atoms[i]) {
- for (j = 0; j < rbatch->atoms[i]->nbo; j++) {
- r600_atom_flush_add(rbatch, rbatch->atoms[i]->bo[j], rbatch->atoms[i]->flags[j]);
- }
- rbatch->emit_atoms[rbatch->nemit_atoms++] = rbatch->atoms[i];
- rbatch->npkts += rbatch->atoms[i]->npkts;
- }
- }
- /* add flush */
- rbatch->npkts += rbatch->nflush * 7;
- /* if batch is bigger than ib size it's an invalid one, this should
- * not happen
- */
- if (rbatch->npkts > scheduler->ib->length_dw) {
- fprintf(stderr, "single batch to big (%d) to fit into ib (%d)\n",
- rbatch->npkts, scheduler->ib->length_dw);
- goto out_err;
- }
- /* flush or not ? */
- if (scheduler->npkts + rbatch->npkts > scheduler->ib->length_dw) {
- r = r600_scheduler_flush(rw);
- if (r)
- goto out_err;
- goto reprocess;
- }
- /* batch is queued */
- for (i = 0; i < R600_BATCH_NATOMS; i++) {
- if (rbatch->atoms[i]) {
- scheduler->last_id[i] = rbatch->atoms[i]->id;
- }
- }
- fprintf(stderr, "batch %d dw scheduler with %d dw\n", rbatch->npkts, scheduler->npkts);
- scheduler->npkts += rbatch->npkts;
- scheduler->nwork++;
- return 0;
-out_err:
- for (i = 0; i < R600_BATCH_NATOMS; i++) {
- if (rbatch->atoms[i])
- r600_atom_destroy(rbatch->atoms[i]);
- }
- free(rbatch);
- return r;
-}
-
-int r600_scheduler_init(struct r600_winsys *rw, struct r600_scheduler *scheduler)
-{
- int r;
-
- memset(scheduler, 0 , sizeof(struct r600_scheduler));
- r = radeon_ib_get(rw, &scheduler->ib);
- if (r)
- return r;
- r600_scheduler_clear(rw, scheduler);
- return 0;
-}
-
-void r600_scheduler_destroy(struct r600_winsys *rw, struct r600_scheduler *scheduler)
-{
- r600_scheduler_clear(rw, scheduler);
- radeon_ib_free(scheduler->ib);
- scheduler->ib = NULL;
-}