forked from Lainports/freebsd-ports
109 lines
2.7 KiB
Text
109 lines
2.7 KiB
Text
*** display/kgi/kgi.c.orig Thu Dec 5 16:59:59 2002
|
|
--- display/kgi/kgi.c Mon Apr 14 17:06:19 2003
|
|
***************
|
|
*** 15,20 ****
|
|
--- 15,30 ----
|
|
kgic_mapper_identify_request_t request;
|
|
kgic_mapper_identify_result_t result;
|
|
} cb;
|
|
+ #ifdef __FreeBSD__
|
|
+ union {
|
|
+ kgic_mapper_attach_request_t request;
|
|
+ kgic_mapper_attach_result_t result;
|
|
+ } at;
|
|
+ union {
|
|
+ kgic_mapper_get_unit_request_t request;
|
|
+ kgic_mapper_get_unit_result_t result;
|
|
+ } get_unit;
|
|
+ #endif
|
|
|
|
if (NULL == ctx) {
|
|
|
|
***************
|
|
*** 35,40 ****
|
|
--- 45,81 ----
|
|
return -KGI_INVAL;
|
|
}
|
|
|
|
+ #ifdef __FreeBSD__
|
|
+ memset(&get_unit, 0, sizeof(get_unit));
|
|
+
|
|
+ /* Pass an invalid device id to force auto attachement */
|
|
+ get_unit.request.unit = -1;
|
|
+ if (ioctl(ctx->mapper.fd, KGIC_MAPPER_GET_UNIT, &get_unit)) {
|
|
+ perror("failed to get free unit");
|
|
+ return errno;
|
|
+ }
|
|
+
|
|
+ /* Close /dev/graphic then open the true one */
|
|
+ close(ctx->mapper.fd);
|
|
+
|
|
+ sprintf(fname, "/dev/graphic%i", get_unit.result.unit);
|
|
+ ctx->mapper.fd = open(fname, O_RDWR | O_NONBLOCK);
|
|
+ if (ctx->mapper.fd < 0) {
|
|
+ perror("failed to open /dev/graphicX");
|
|
+ return errno;
|
|
+ }
|
|
+
|
|
+ memset(&at, 0, sizeof(at));
|
|
+
|
|
+ /* Pass an invalid device id to force auto attachement */
|
|
+ at.request.device_id = -1;
|
|
+ if (ioctl(ctx->mapper.fd, KGIC_MAPPER_ATTACH, &at)) {
|
|
+
|
|
+ perror("failed to attach to device");
|
|
+ return errno;
|
|
+ }
|
|
+ #endif
|
|
+
|
|
memset(&cb, 0, sizeof(cb));
|
|
strncpy(cb.request.client, client,
|
|
sizeof(cb.request.client));
|
|
***************
|
|
*** 245,252 ****
|
|
switch (cb.result.type & KGI_RT_MASK) {
|
|
|
|
case KGI_RT_MMIO:
|
|
! printf("MMIO: window %i, size %i, align %.8x, "
|
|
! "access %.8x\n",
|
|
cb.result.info.mmio.window,
|
|
cb.result.info.mmio.size,
|
|
cb.result.info.mmio.align,
|
|
--- 286,293 ----
|
|
switch (cb.result.type & KGI_RT_MASK) {
|
|
|
|
case KGI_RT_MMIO:
|
|
! printf("MMIO: window %li, size %li, align %.8lx, "
|
|
! "access %.8lx\n",
|
|
cb.result.info.mmio.window,
|
|
cb.result.info.mmio.size,
|
|
cb.result.info.mmio.align,
|
|
***************
|
|
*** 254,266 ****
|
|
break;
|
|
|
|
case KGI_RT_ACCEL:
|
|
! printf("ACCEL: recommended are %i buffers of size %i\n",
|
|
cb.result.info.accel.buffers,
|
|
cb.result.info.accel.buffer_size);
|
|
break;
|
|
|
|
case KGI_RT_SHMEM:
|
|
! printf("SHMEM: (maximum) aperture size %i\n",
|
|
cb.result.info.shmem.aperture_size);
|
|
break;
|
|
|
|
--- 295,307 ----
|
|
break;
|
|
|
|
case KGI_RT_ACCEL:
|
|
! printf("ACCEL: recommended are %li buffers of size %li\n",
|
|
cb.result.info.accel.buffers,
|
|
cb.result.info.accel.buffer_size);
|
|
break;
|
|
|
|
case KGI_RT_SHMEM:
|
|
! printf("SHMEM: (maximum) aperture size %li\n",
|
|
cb.result.info.shmem.aperture_size);
|
|
break;
|
|
|