Merge remote branch 'korg/drm-radeon-testing' into drm-next-stage
* korg/drm-radeon-testing: (62 commits) drm/radeon/kms: update new pll algo drm/radeon/kms: add support for square microtiles on r3xx-r5xx drm/radeon/kms: force pinning buffer into visible VRAM drm/radeon/kms/evergreen: fix typo in cursor code drm/radeon/kms: implement reading active PCIE lanes on R600+ drm/radeon/kms: for downclocking non-mobility check PERFORMANCE state drm/radeon/kms: simplify storing current and requested PM mode drm/radeon: fixes for r6xx/r7xx gfx init drm/radeon/rv740: fix backend setup drm/radeon/kms: fix R3XX/R4XX memory controller initialization [rfc] drm/radeon/kms: pm debugging check for vbl. drm/radeon: Fix memory allocation failures in the preKMS command stream checking. drm: Add generic multipart buffer. drm/radeon/kms: simplify memory controller setup V2 drm/radeon: Add asic hook for dma copy to r200 cards. drm/radeon/kms: Create asic structure for r300 pcie cards. drm/radeon/kms: remove unused r600_gart_clear_page drm/radeon/kms: remove HDP flushes from fence emit (v2) drm/radeon/kms: add LVDS pll quirk for Dell Studio 15 drm/radeon/kms: simplify picking power state ... Conflicts: drivers/gpu/drm/radeon/atom.c drivers/gpu/drm/radeon/atombios.h drivers/gpu/drm/radeon/atombios_dp.c drivers/gpu/drm/radeon/r600.c drivers/gpu/drm/radeon/r600_audio.c drivers/gpu/drm/radeon/r600_cp.c drivers/gpu/drm/radeon/radeon.h drivers/gpu/drm/radeon/radeon_connectors.c drivers/gpu/drm/radeon/radeon_ring.c drivers/gpu/drm/radeon/rv770.c
This commit is contained in:
@@ -295,6 +295,9 @@ typedef struct drm_radeon_private {
|
||||
int r700_sc_prim_fifo_size;
|
||||
int r700_sc_hiz_tile_fifo_size;
|
||||
int r700_sc_earlyz_tile_fifo_fize;
|
||||
int r600_group_size;
|
||||
int r600_npipes;
|
||||
int r600_nbanks;
|
||||
|
||||
struct mutex cs_mutex;
|
||||
u32 cs_id_scnt;
|
||||
@@ -310,9 +313,11 @@ typedef struct drm_radeon_buf_priv {
|
||||
u32 age;
|
||||
} drm_radeon_buf_priv_t;
|
||||
|
||||
struct drm_buffer;
|
||||
|
||||
typedef struct drm_radeon_kcmd_buffer {
|
||||
int bufsz;
|
||||
char *buf;
|
||||
struct drm_buffer *buffer;
|
||||
int nbox;
|
||||
struct drm_clip_rect __user *boxes;
|
||||
} drm_radeon_kcmd_buffer_t;
|
||||
@@ -2122,4 +2127,32 @@ extern void radeon_commit_ring(drm_radeon_private_t *dev_priv);
|
||||
write &= mask; \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* Copy given number of dwords from drm buffer to the ring buffer.
|
||||
*/
|
||||
#define OUT_RING_DRM_BUFFER(buf, sz) do { \
|
||||
int _size = (sz) * 4; \
|
||||
struct drm_buffer *_buf = (buf); \
|
||||
int _part_size; \
|
||||
while (_size > 0) { \
|
||||
_part_size = _size; \
|
||||
\
|
||||
if (write + _part_size/4 > mask) \
|
||||
_part_size = ((mask + 1) - write)*4; \
|
||||
\
|
||||
if (drm_buffer_index(_buf) + _part_size > PAGE_SIZE) \
|
||||
_part_size = PAGE_SIZE - drm_buffer_index(_buf);\
|
||||
\
|
||||
\
|
||||
\
|
||||
memcpy(ring + write, &_buf->data[drm_buffer_page(_buf)] \
|
||||
[drm_buffer_index(_buf)], _part_size); \
|
||||
\
|
||||
_size -= _part_size; \
|
||||
write = (write + _part_size/4) & mask; \
|
||||
drm_buffer_advance(_buf, _part_size); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
#endif /* __RADEON_DRV_H__ */
|
||||
|
Reference in New Issue
Block a user