mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
Revert "r300-gallium, radeon-gallium: Nuke gb_pipes from orbit."
This reverts commit 6a40d1e9d9.
Turns out that we *do* need these for OQ after all. Go figure.
Conflicts:
src/gallium/winsys/drm/radeon/core/radeon_r300.h
This commit is contained in:
parent
73fc09a7bf
commit
c63bd15f81
6 changed files with 46 additions and 2 deletions
|
|
@ -34,6 +34,7 @@ void r300_parse_chipset(struct r300_capabilities* caps)
|
|||
caps->is_r500 = FALSE;
|
||||
caps->num_vert_fpus = 4;
|
||||
|
||||
|
||||
/* Note: These are not ordered by PCI ID. I leave that task to GCC,
|
||||
* which will perform the ordering while collating jump tables. Instead,
|
||||
* I've tried to group them according to capabilities and age. */
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@ struct r300_capabilities {
|
|||
int family;
|
||||
/* The number of vertex floating-point units */
|
||||
int num_vert_fpus;
|
||||
/* The number of fragment pipes */
|
||||
int num_frag_pipes;
|
||||
/* Whether or not TCL is physically present */
|
||||
boolean has_tcl;
|
||||
/* Whether or not this is an RV515 or newer; R500s have many differences
|
||||
|
|
|
|||
|
|
@ -392,6 +392,7 @@ struct pipe_screen* r300_create_screen(struct r300_winsys* r300_winsys)
|
|||
return NULL;
|
||||
|
||||
caps->pci_id = r300_winsys->pci_id;
|
||||
caps->num_frag_pipes = r300_winsys->gb_pipes;
|
||||
|
||||
r300_parse_chipset(caps);
|
||||
|
||||
|
|
|
|||
|
|
@ -353,6 +353,25 @@ static INLINE uint32_t r300_translate_out_fmt(enum pipe_format format)
|
|||
|
||||
/* Non-CSO state. (For now.) */
|
||||
|
||||
static INLINE uint32_t r300_translate_gb_pipes(int pipe_count)
|
||||
{
|
||||
switch (pipe_count) {
|
||||
case 1:
|
||||
return R300_GB_TILE_PIPE_COUNT_RV300;
|
||||
break;
|
||||
case 2:
|
||||
return R300_GB_TILE_PIPE_COUNT_R300;
|
||||
break;
|
||||
case 3:
|
||||
return R300_GB_TILE_PIPE_COUNT_R420_3P;
|
||||
break;
|
||||
case 4:
|
||||
return R300_GB_TILE_PIPE_COUNT_R420;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static INLINE uint32_t translate_vertex_data_type(int type) {
|
||||
switch (type) {
|
||||
case EMIT_1F:
|
||||
|
|
|
|||
|
|
@ -45,6 +45,9 @@ struct r300_winsys {
|
|||
/* PCI ID */
|
||||
uint32_t pci_id;
|
||||
|
||||
/* GB pipe count */
|
||||
uint32_t gb_pipes;
|
||||
|
||||
/* GART size. */
|
||||
uint32_t gart_size;
|
||||
|
||||
|
|
|
|||
|
|
@ -139,7 +139,25 @@ static void do_ioctls(struct r300_winsys* winsys, int fd)
|
|||
|
||||
info.value = ⌖
|
||||
|
||||
/* First, get PCI ID */
|
||||
/* First, get the number of pixel pipes */
|
||||
info.request = RADEON_INFO_NUM_GB_PIPES;
|
||||
retval = drmCommandWriteRead(fd, DRM_RADEON_INFO, &info, sizeof(info));
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s: New ioctl for GB pipe count failed "
|
||||
"(error number %d), trying classic ioctl...\n",
|
||||
__FUNCTION__, retval);
|
||||
gp.param = RADEON_PARAM_NUM_GB_PIPES;
|
||||
retval = drmCommandWriteRead(fd, DRM_RADEON_GETPARAM, &gp,
|
||||
sizeof(gp));
|
||||
if (retval) {
|
||||
fprintf(stderr, "%s: Failed to get GB pipe count, "
|
||||
"error number %d\n", __FUNCTION__, retval);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
winsys->gb_pipes = target;
|
||||
|
||||
/* Then, get PCI ID */
|
||||
info.request = RADEON_INFO_DEVICE_ID;
|
||||
retval = drmCommandWriteRead(fd, DRM_RADEON_INFO, &info, sizeof(info));
|
||||
if (retval) {
|
||||
|
|
@ -149,7 +167,7 @@ static void do_ioctls(struct r300_winsys* winsys, int fd)
|
|||
}
|
||||
winsys->pci_id = target;
|
||||
|
||||
/* Then, retrieve MM info */
|
||||
/* Finally, retrieve MM info */
|
||||
retval = drmCommandWriteRead(fd, DRM_RADEON_GEM_INFO,
|
||||
&gem_info, sizeof(gem_info));
|
||||
if (retval) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue