diff options
| author | Thomas Hellstrom <thellstrom@vmware.com> | 2012-11-21 04:23:14 -0500 |
|---|---|---|
| committer | Thomas Hellstrom <thellstrom@vmware.com> | 2014-01-17 01:47:53 -0500 |
| commit | cfe4d53eee81878ded963e76957f4aeed85f0a82 (patch) | |
| tree | 7ca662265faaf37146914ddbbdf07631c212b524 /include/uapi/drm | |
| parent | d9019498dddae69c69d0981a056f137d2893d3e0 (diff) | |
drm/vmwgfx: Update the driver user-space interface for guest-backed objects
Not hooked up yet. This is only the definition.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Zack Rusin <zackr@vmware.com>
Conflicts:
include/uapi/drm/vmwgfx_drm.h
Diffstat (limited to 'include/uapi/drm')
| -rw-r--r-- | include/uapi/drm/vmwgfx_drm.h | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/include/uapi/drm/vmwgfx_drm.h b/include/uapi/drm/vmwgfx_drm.h index bcb0912afe7a..39ab12f6e982 100644 --- a/include/uapi/drm/vmwgfx_drm.h +++ b/include/uapi/drm/vmwgfx_drm.h | |||
| @@ -55,6 +55,11 @@ | |||
| 55 | #define DRM_VMW_PRESENT 18 | 55 | #define DRM_VMW_PRESENT 18 |
| 56 | #define DRM_VMW_PRESENT_READBACK 19 | 56 | #define DRM_VMW_PRESENT_READBACK 19 |
| 57 | #define DRM_VMW_UPDATE_LAYOUT 20 | 57 | #define DRM_VMW_UPDATE_LAYOUT 20 |
| 58 | #define DRM_VMW_CREATE_SHADER 21 | ||
| 59 | #define DRM_VMW_UNREF_SHADER 22 | ||
| 60 | #define DRM_VMW_GB_SURFACE_CREATE 23 | ||
| 61 | #define DRM_VMW_GB_SURFACE_REF 24 | ||
| 62 | |||
| 58 | 63 | ||
| 59 | /*************************************************************************/ | 64 | /*************************************************************************/ |
| 60 | /** | 65 | /** |
| @@ -75,6 +80,8 @@ | |||
| 75 | #define DRM_VMW_PARAM_FIFO_CAPS 4 | 80 | #define DRM_VMW_PARAM_FIFO_CAPS 4 |
| 76 | #define DRM_VMW_PARAM_MAX_FB_SIZE 5 | 81 | #define DRM_VMW_PARAM_MAX_FB_SIZE 5 |
| 77 | #define DRM_VMW_PARAM_FIFO_HW_VERSION 6 | 82 | #define DRM_VMW_PARAM_FIFO_HW_VERSION 6 |
| 83 | #define DRM_VMW_PARAM_MAX_SURF_MEMORY 7 | ||
| 84 | #define DRM_VMW_PARAM_3D_CAPS_SIZE 8 | ||
| 78 | 85 | ||
| 79 | /** | 86 | /** |
| 80 | * struct drm_vmw_getparam_arg | 87 | * struct drm_vmw_getparam_arg |
| @@ -787,4 +794,196 @@ struct drm_vmw_update_layout_arg { | |||
| 787 | uint64_t rects; | 794 | uint64_t rects; |
| 788 | }; | 795 | }; |
| 789 | 796 | ||
| 797 | |||
| 798 | /*************************************************************************/ | ||
| 799 | /** | ||
| 800 | * DRM_VMW_CREATE_SHADER - Create shader | ||
| 801 | * | ||
| 802 | * Creates a shader and optionally binds it to a dma buffer containing | ||
| 803 | * the shader byte-code. | ||
| 804 | */ | ||
| 805 | |||
| 806 | /** | ||
| 807 | * enum drm_vmw_shader_type - Shader types | ||
| 808 | */ | ||
| 809 | enum drm_vmw_shader_type { | ||
| 810 | drm_vmw_shader_type_vs = 0, | ||
| 811 | drm_vmw_shader_type_ps, | ||
| 812 | drm_vmw_shader_type_gs | ||
| 813 | }; | ||
| 814 | |||
| 815 | |||
| 816 | /** | ||
| 817 | * struct drm_vmw_shader_create_arg | ||
| 818 | * | ||
| 819 | * @shader_type: Shader type of the shader to create. | ||
| 820 | * @size: Size of the byte-code in bytes. | ||
| 821 | * where the shader byte-code starts | ||
| 822 | * @buffer_handle: Buffer handle identifying the buffer containing the | ||
| 823 | * shader byte-code | ||
| 824 | * @shader_handle: On successful completion contains a handle that | ||
| 825 | * can be used to subsequently identify the shader. | ||
| 826 | * @offset: Offset in bytes into the buffer given by @buffer_handle, | ||
| 827 | * | ||
| 828 | * Input / Output argument to the DRM_VMW_CREATE_SHADER Ioctl. | ||
| 829 | */ | ||
| 830 | struct drm_vmw_shader_create_arg { | ||
| 831 | enum drm_vmw_shader_type shader_type; | ||
| 832 | uint32_t size; | ||
| 833 | uint32_t buffer_handle; | ||
| 834 | uint32_t shader_handle; | ||
| 835 | uint64_t offset; | ||
| 836 | }; | ||
| 837 | |||
| 838 | /*************************************************************************/ | ||
| 839 | /** | ||
| 840 | * DRM_VMW_UNREF_SHADER - Unreferences a shader | ||
| 841 | * | ||
| 842 | * Destroys a user-space reference to a shader, optionally destroying | ||
| 843 | * it. | ||
| 844 | */ | ||
| 845 | |||
| 846 | /** | ||
| 847 | * struct drm_vmw_shader_arg | ||
| 848 | * | ||
| 849 | * @handle: Handle identifying the shader to destroy. | ||
| 850 | * | ||
| 851 | * Input argument to the DRM_VMW_UNREF_SHADER ioctl. | ||
| 852 | */ | ||
| 853 | struct drm_vmw_shader_arg { | ||
| 854 | uint32_t handle; | ||
| 855 | uint32_t pad64; | ||
| 856 | }; | ||
| 857 | |||
| 858 | /*************************************************************************/ | ||
| 859 | /** | ||
| 860 | * DRM_VMW_GB_SURFACE_CREATE - Create a host guest-backed surface. | ||
| 861 | * | ||
| 862 | * Allocates a surface handle and queues a create surface command | ||
| 863 | * for the host on the first use of the surface. The surface ID can | ||
| 864 | * be used as the surface ID in commands referencing the surface. | ||
| 865 | */ | ||
| 866 | |||
| 867 | /** | ||
| 868 | * enum drm_vmw_surface_flags | ||
| 869 | * | ||
| 870 | * @drm_vmw_surface_flag_shareable: Whether the surface is shareable | ||
| 871 | * @drm_vmw_surface_flag_scanout: Whether the surface is a scanout | ||
| 872 | * surface. | ||
| 873 | * @drm_vmw_surface_flag_create_buffer: Create a backup buffer if none is | ||
| 874 | * given. | ||
| 875 | */ | ||
| 876 | enum drm_vmw_surface_flags { | ||
| 877 | drm_vmw_surface_flag_shareable = (1 << 0), | ||
| 878 | drm_vmw_surface_flag_scanout = (1 << 1), | ||
| 879 | drm_vmw_surface_flag_create_buffer = (1 << 2) | ||
| 880 | }; | ||
| 881 | |||
| 882 | /** | ||
| 883 | * struct drm_vmw_gb_surface_create_req | ||
| 884 | * | ||
| 885 | * @svga3d_flags: SVGA3d surface flags for the device. | ||
| 886 | * @format: SVGA3d format. | ||
| 887 | * @mip_level: Number of mip levels for all faces. | ||
| 888 | * @drm_surface_flags Flags as described above. | ||
| 889 | * @multisample_count Future use. Set to 1. | ||
| 890 | * @autogen_filter Future use. Set to 0. | ||
| 891 | * @buffer_handle Buffer handle of backup buffer. SVGA3D_INVALID_ID | ||
| 892 | * if none. | ||
| 893 | * @base_size Size of the base mip level for all faces. | ||
| 894 | * | ||
| 895 | * Input argument to the DRM_VMW_GB_SURFACE_CREATE Ioctl. | ||
| 896 | * Part of output argument for the DRM_VMW_GB_SURFACE_REF Ioctl. | ||
| 897 | */ | ||
| 898 | struct drm_vmw_gb_surface_create_req { | ||
| 899 | uint32_t svga3d_flags; | ||
| 900 | uint32_t format; | ||
| 901 | uint32_t mip_levels; | ||
| 902 | enum drm_vmw_surface_flags drm_surface_flags; | ||
| 903 | uint32_t multisample_count; | ||
| 904 | uint32_t autogen_filter; | ||
| 905 | uint32_t buffer_handle; | ||
| 906 | uint32_t pad64; | ||
| 907 | struct drm_vmw_size base_size; | ||
| 908 | }; | ||
| 909 | |||
| 910 | /** | ||
| 911 | * struct drm_vmw_gb_surface_create_rep | ||
| 912 | * | ||
| 913 | * @handle: Surface handle. | ||
| 914 | * @backup_size: Size of backup buffers for this surface. | ||
| 915 | * @buffer_handle: Handle of backup buffer. SVGA3D_INVALID_ID if none. | ||
| 916 | * @buffer_size: Actual size of the buffer identified by | ||
| 917 | * @buffer_handle | ||
| 918 | * @buffer_map_handle: Offset into device address space for the buffer | ||
| 919 | * identified by @buffer_handle. | ||
| 920 | * | ||
| 921 | * Part of output argument for the DRM_VMW_GB_SURFACE_REF ioctl. | ||
| 922 | * Output argument for the DRM_VMW_GB_SURFACE_CREATE ioctl. | ||
| 923 | */ | ||
| 924 | struct drm_vmw_gb_surface_create_rep { | ||
| 925 | uint32_t handle; | ||
| 926 | uint32_t backup_size; | ||
| 927 | uint32_t buffer_handle; | ||
| 928 | uint32_t buffer_size; | ||
| 929 | uint64_t buffer_map_handle; | ||
| 930 | }; | ||
| 931 | |||
| 932 | /** | ||
| 933 | * union drm_vmw_gb_surface_create_arg | ||
| 934 | * | ||
| 935 | * @req: Input argument as described above. | ||
| 936 | * @rep: Output argument as described above. | ||
| 937 | * | ||
| 938 | * Argument to the DRM_VMW_GB_SURFACE_CREATE ioctl. | ||
| 939 | */ | ||
| 940 | union drm_vmw_gb_surface_create_arg { | ||
| 941 | struct drm_vmw_gb_surface_create_rep rep; | ||
| 942 | struct drm_vmw_gb_surface_create_req req; | ||
| 943 | }; | ||
| 944 | |||
| 945 | /*************************************************************************/ | ||
| 946 | /** | ||
| 947 | * DRM_VMW_GB_SURFACE_REF - Reference a host surface. | ||
| 948 | * | ||
| 949 | * Puts a reference on a host surface with a given handle, as previously | ||
| 950 | * returned by the DRM_VMW_GB_SURFACE_CREATE ioctl. | ||
| 951 | * A reference will make sure the surface isn't destroyed while we hold | ||
| 952 | * it and will allow the calling client to use the surface handle in | ||
| 953 | * the command stream. | ||
| 954 | * | ||
| 955 | * On successful return, the Ioctl returns the surface information given | ||
| 956 | * to and returned from the DRM_VMW_GB_SURFACE_CREATE ioctl. | ||
| 957 | */ | ||
| 958 | |||
| 959 | /** | ||
| 960 | * struct drm_vmw_gb_surface_reference_arg | ||
| 961 | * | ||
| 962 | * @creq: The data used as input when the surface was created, as described | ||
| 963 | * above at "struct drm_vmw_gb_surface_create_req" | ||
| 964 | * @crep: Additional data output when the surface was created, as described | ||
| 965 | * above at "struct drm_vmw_gb_surface_create_rep" | ||
| 966 | * | ||
| 967 | * Output Argument to the DRM_VMW_GB_SURFACE_REF ioctl. | ||
| 968 | */ | ||
| 969 | struct drm_vmw_gb_surface_ref_rep { | ||
| 970 | struct drm_vmw_gb_surface_create_req creq; | ||
| 971 | struct drm_vmw_gb_surface_create_rep crep; | ||
| 972 | }; | ||
| 973 | |||
| 974 | /** | ||
| 975 | * union drm_vmw_gb_surface_reference_arg | ||
| 976 | * | ||
| 977 | * @req: Input data as described above at "struct drm_vmw_surface_arg" | ||
| 978 | * @rep: Output data as described above at "struct drm_vmw_gb_surface_ref_rep" | ||
| 979 | * | ||
| 980 | * Argument to the DRM_VMW_GB_SURFACE_REF Ioctl. | ||
| 981 | */ | ||
| 982 | union drm_vmw_gb_surface_reference_arg { | ||
| 983 | struct drm_vmw_gb_surface_ref_rep rep; | ||
| 984 | struct drm_vmw_surface_arg req; | ||
| 985 | }; | ||
| 986 | |||
| 987 | |||
| 988 | |||
| 790 | #endif | 989 | #endif |
