diff options
author | Chia-I Wu <olv@lunarg.com> | 2010-09-19 16:54:39 +0800 |
---|---|---|
committer | Chia-I Wu <olv@lunarg.com> | 2010-09-19 17:19:03 +0800 |
commit | e7424d72405a1cb1fb5ac625b340043aaa9f88be (patch) | |
tree | a0aa7f6a401d1697c5188d7a6ae1b6c69c08f6a6 /src/gallium/state_trackers/egl/drm/native_drm.h | |
parent | c7c2e7d0ce97b1586219be2ba742758f23f5c7aa (diff) |
st/egl: Rename kms backend to drm.
The main use of the backend is to support EGL_MESA_drm_display. drm
should be a better name.
Diffstat (limited to 'src/gallium/state_trackers/egl/drm/native_drm.h')
-rw-r--r-- | src/gallium/state_trackers/egl/drm/native_drm.h | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/egl/drm/native_drm.h b/src/gallium/state_trackers/egl/drm/native_drm.h new file mode 100644 index 0000000000..3a9b1a6788 --- /dev/null +++ b/src/gallium/state_trackers/egl/drm/native_drm.h @@ -0,0 +1,146 @@ +/* + * Mesa 3-D graphics library + * Version: 7.8 + * + * Copyright (C) 2010 Chia-I Wu <olv@0xlab.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 + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * 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 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 NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS 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. + */ + +#ifndef _NATIVE_KMS_H_ +#define _NATIVE_KMS_H_ + +#include <xf86drm.h> +#include <xf86drmMode.h> + +#include "pipe/p_compiler.h" +#include "util/u_format.h" +#include "pipe/p_state.h" +#include "state_tracker/drm_driver.h" + +#include "common/native.h" +#include "common/native_helper.h" + +struct kms_config; +struct kms_crtc; +struct kms_connector; +struct kms_mode; +struct kms_surface; + +struct kms_display { + struct native_display base; + + struct native_event_handler *event_handler; + + int fd; + struct kms_config *config; + + /* for modesetting */ + drmModeResPtr resources; + struct kms_connector *connectors; + int num_connectors; + + struct kms_surface **shown_surfaces; + /* save the original settings of the CRTCs */ + struct kms_crtc *saved_crtcs; +}; + +struct kms_config { + struct native_config base; +}; + +struct kms_crtc { + drmModeCrtcPtr crtc; + uint32_t connectors[32]; + int num_connectors; +}; + +struct kms_framebuffer { + struct pipe_resource *texture; + boolean is_passive; + + uint32_t buffer_id; +}; + +struct kms_surface { + struct native_surface base; + struct kms_display *kdpy; + + struct resource_surface *rsurf; + enum pipe_format color_format; + int width, height; + + unsigned int sequence_number; + struct kms_framebuffer front_fb, back_fb; + + boolean is_shown; + struct kms_crtc current_crtc; +}; + +struct kms_connector { + struct native_connector base; + + uint32_t connector_id; + drmModeConnectorPtr connector; + struct kms_mode *kms_modes; + int num_modes; +}; + +struct kms_mode { + struct native_mode base; + drmModeModeInfo mode; +}; + +static INLINE struct kms_display * +kms_display(const struct native_display *ndpy) +{ + return (struct kms_display *) ndpy; +} + +static INLINE struct kms_config * +kms_config(const struct native_config *nconf) +{ + return (struct kms_config *) nconf; +} + +static INLINE struct kms_surface * +kms_surface(const struct native_surface *nsurf) +{ + return (struct kms_surface *) nsurf; +} + +static INLINE struct kms_connector * +kms_connector(const struct native_connector *nconn) +{ + return (struct kms_connector *) nconn; +} + +static INLINE struct kms_mode * +kms_mode(const struct native_mode *nmode) +{ + return (struct kms_mode *) nmode; +} + +boolean +kms_display_init_modeset(struct native_display *ndpy); + +void +kms_display_fini_modeset(struct native_display *ndpy); + +#endif /* _NATIVE_KMS_H_ */ |