nouveau_channel.h revision 7a0d67332f33bc21290d63bc7c8150b0cf0a4b21
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne/*
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * Copyright 2007 Nouveau Project
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne *
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * Permission is hereby granted, free of charge, to any person obtaining a
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * copy of this software and associated documentation files (the "Software"),
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * to deal in the Software without restriction, including without limitation
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * the rights to use, copy, modify, merge, publish, distribute, sublicense,
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * and/or sell copies of the Software, and to permit persons to whom the
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * Software is furnished to do so, subject to the following conditions:
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne *
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * The above copyright notice and this permission notice shall be included in
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * all copies or substantial portions of the Software.
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne *
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne * SOFTWARE.
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne */
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne#ifndef __NOUVEAU_CHANNEL_H__
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne#define __NOUVEAU_CHANNEL_H__
e26e5073e1266868172d72453c97f413fe2fb603Jake Feasel
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Brownestruct nouveau_subchannel {
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne struct nouveau_grobj *gr;
e26e5073e1266868172d72453c97f413fe2fb603Jake Feasel unsigned sequence;
e26e5073e1266868172d72453c97f413fe2fb603Jake Feasel};
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne
e26e5073e1266868172d72453c97f413fe2fb603Jake Feaselstruct nouveau_channel {
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne struct nouveau_device *device;
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne int id;
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne struct nouveau_pushbuf *pushbuf;
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne struct nouveau_grobj *nullobj;
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne struct nouveau_grobj *vram;
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne struct nouveau_grobj *gart;
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne void *user_private;
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne void (*hang_notify)(struct nouveau_channel *);
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne void (*flush_notify)(struct nouveau_channel *);
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne struct nouveau_subchannel subc[8];
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne unsigned subc_sequence;
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne};
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne
ebd5e19e50d5274715d9898f1e190797bee6708ahuck.elliottint
ebd5e19e50d5274715d9898f1e190797bee6708ahuck.elliottnouveau_channel_alloc(struct nouveau_device *, uint32_t fb, uint32_t tt,
6f2335db0c5bdcf17e33937e535282dbcfc27769jason.browne struct nouveau_channel **);
6f2335db0c5bdcf17e33937e535282dbcfc27769jason.browne
ebd5e19e50d5274715d9898f1e190797bee6708ahuck.elliottvoid
ebd5e19e50d5274715d9898f1e190797bee6708ahuck.elliottnouveau_channel_free(struct nouveau_channel **);
6f2335db0c5bdcf17e33937e535282dbcfc27769jason.browne
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne#endif
c73b84d3ebdaeddcf22fbf1dc303bc08f8bbe0bbJason Browne