mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 02:48:06 +02:00
st/vdpau: Initial commit.
Enough plumbing here to get vdpauinfo working.
This commit is contained in:
parent
b9fe966519
commit
f3e34ba6fb
8 changed files with 639 additions and 0 deletions
15
src/gallium/state_trackers/vdpau/Makefile
Normal file
15
src/gallium/state_trackers/vdpau/Makefile
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
TOP = ../../../..
|
||||
include $(TOP)/configs/current
|
||||
|
||||
LIBNAME = vdpautracker
|
||||
|
||||
LIBRARY_INCLUDES = \
|
||||
$(shell pkg-config --cflags-only-I vdpau) \
|
||||
-I$(TOP)/src/gallium/winsys/g3dvl
|
||||
|
||||
C_SOURCES = htab.c \
|
||||
ftab.c \
|
||||
device.c \
|
||||
query.c
|
||||
|
||||
include ../../Makefile.template
|
||||
98
src/gallium/state_trackers/vdpau/device.c
Normal file
98
src/gallium/state_trackers/vdpau/device.c
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2010 Younes Manton.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* 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, sub license, 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 (including the
|
||||
* next paragraph) 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 NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include <vdpau/vdpau_x11.h>
|
||||
#include <pipe/p_compiler.h>
|
||||
#include <vl_winsys.h>
|
||||
#include <util/u_memory.h>
|
||||
#include "vdpau_private.h"
|
||||
|
||||
VdpDeviceCreateX11 vdp_imp_device_create_x11;
|
||||
|
||||
PUBLIC VdpStatus
|
||||
vdp_imp_device_create_x11(Display *display, int screen, VdpDevice *device, VdpGetProcAddress **get_proc_address)
|
||||
{
|
||||
VdpStatus ret;
|
||||
vlVdpDevice *dev;
|
||||
|
||||
if (!(display && device && get_proc_address))
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
if (!vlCreateHTAB()) {
|
||||
ret = VDP_STATUS_RESOURCES;
|
||||
goto no_htab;
|
||||
}
|
||||
|
||||
dev = CALLOC(1, sizeof(vlVdpDevice));
|
||||
if (!dev) {
|
||||
ret = VDP_STATUS_RESOURCES;
|
||||
goto no_dev;
|
||||
}
|
||||
|
||||
*device = vlAddDataHTAB(dev);
|
||||
if (*device == 0) {
|
||||
ret = VDP_STATUS_ERROR;
|
||||
goto no_handle;
|
||||
}
|
||||
|
||||
*get_proc_address = &vlVdpGetProcAddress;
|
||||
|
||||
return VDP_STATUS_OK;
|
||||
|
||||
no_handle:
|
||||
FREE(dev);
|
||||
no_dev:
|
||||
vlDestroyHTAB();
|
||||
no_htab:
|
||||
return ret;
|
||||
}
|
||||
|
||||
VdpStatus vlVdpDeviceDestroy(VdpDevice device)
|
||||
{
|
||||
vlVdpDevice *dev = vlGetDataHTAB(device);
|
||||
if (!dev)
|
||||
return VDP_STATUS_INVALID_HANDLE;
|
||||
FREE(dev);
|
||||
vlDestroyHTAB();
|
||||
|
||||
return VDP_STATUS_OK;
|
||||
}
|
||||
|
||||
VdpStatus vlVdpGetProcAddress(VdpDevice device, VdpFuncId function_id, void **function_pointer)
|
||||
{
|
||||
vlVdpDevice *dev = vlGetDataHTAB(device);
|
||||
if (!dev)
|
||||
return VDP_STATUS_INVALID_HANDLE;
|
||||
|
||||
if (!function_pointer)
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
if (!vlGetFuncFTAB(function_id, function_pointer))
|
||||
return VDP_STATUS_INVALID_FUNC_ID;
|
||||
|
||||
return VDP_STATUS_OK;
|
||||
}
|
||||
122
src/gallium/state_trackers/vdpau/ftab.c
Normal file
122
src/gallium/state_trackers/vdpau/ftab.c
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2010 Younes Manton.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* 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, sub license, 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 (including the
|
||||
* next paragraph) 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 NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include <assert.h>
|
||||
#include "vdpau_private.h"
|
||||
|
||||
static void* ftab[67] =
|
||||
{
|
||||
0, /* VDP_FUNC_ID_GET_ERROR_STRING */
|
||||
0, /* VDP_FUNC_ID_GET_PROC_ADDRESS */
|
||||
&vlVdpGetApiVersion, /* VDP_FUNC_ID_GET_API_VERSION */
|
||||
0,
|
||||
&vlVdpGetInformationString, /* VDP_FUNC_ID_GET_INFORMATION_STRING */
|
||||
&vlVdpDeviceDestroy, /* VDP_FUNC_ID_DEVICE_DESTROY */
|
||||
0, /* VDP_FUNC_ID_GENERATE_CSC_MATRIX */
|
||||
&vlVdpVideoSurfaceQueryCapabilities, /* VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES */
|
||||
&vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities, /* VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES */
|
||||
0, /* VDP_FUNC_ID_VIDEO_SURFACE_CREATE */
|
||||
0, /* VDP_FUNC_ID_VIDEO_SURFACE_DESTROY */
|
||||
0, /* VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS */
|
||||
0, /* VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR */
|
||||
0, /* VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR */
|
||||
&vlVdpOutputSurfaceQueryCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES */
|
||||
&vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES */
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES */
|
||||
&vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES */
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_CREATE */
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY */
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS */
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE */
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE */
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED */
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR */
|
||||
&vlVdpBitmapSurfaceQueryCapabilities, /* VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES */
|
||||
0, /* VDP_FUNC_ID_BITMAP_SURFACE_CREATE */
|
||||
0, /* VDP_FUNC_ID_BITMAP_SURFACE_DESTROY */
|
||||
0, /* VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS */
|
||||
0, /* VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE */
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE */
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE */
|
||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA */
|
||||
&vlVdpDecoderQueryCapabilities, /* VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES */
|
||||
0, /* VDP_FUNC_ID_DECODER_CREATE */
|
||||
0, /* VDP_FUNC_ID_DECODER_DESTROY */
|
||||
0, /* VDP_FUNC_ID_DECODER_GET_PARAMETERS */
|
||||
0, /* VDP_FUNC_ID_DECODER_RENDER */
|
||||
&vlVdpVideoMixerQueryFeatureSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT */
|
||||
&vlVdpVideoMixerQueryParameterSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT */
|
||||
&vlVdpVideoMixerQueryAttributeSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT */
|
||||
&vlVdpVideoMixerQueryParameterValueRange, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE */
|
||||
&vlVdpVideoMixerQueryAttributeValueRange, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE */
|
||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_CREATE */
|
||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES */
|
||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES */
|
||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT */
|
||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES */
|
||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES */
|
||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES */
|
||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_DESTROY */
|
||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_RENDER */
|
||||
0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY */
|
||||
0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE */
|
||||
0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY */
|
||||
0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR */
|
||||
0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR */
|
||||
0,
|
||||
0,
|
||||
0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME */
|
||||
0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY */
|
||||
0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE */
|
||||
0, /* VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS */
|
||||
0 /* VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER */
|
||||
};
|
||||
|
||||
static void* ftab_winsys[1] =
|
||||
{
|
||||
0 /* VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_CREATE_X11 */
|
||||
};
|
||||
|
||||
boolean vlGetFuncFTAB(VdpFuncId function_id, void **func)
|
||||
{
|
||||
assert(func);
|
||||
if (function_id < VDP_FUNC_ID_BASE_WINSYS) {
|
||||
if (function_id > 66)
|
||||
return FALSE;
|
||||
*func = ftab[function_id];
|
||||
}
|
||||
else {
|
||||
function_id -= VDP_FUNC_ID_BASE_WINSYS;
|
||||
if (function_id > 0)
|
||||
return FALSE;
|
||||
*func = ftab_winsys[function_id];
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
94
src/gallium/state_trackers/vdpau/htab.c
Normal file
94
src/gallium/state_trackers/vdpau/htab.c
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2010 Younes Manton.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* 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, sub license, 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 (including the
|
||||
* next paragraph) 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 NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include <util/u_handle_table.h>
|
||||
#include <os/os_thread.h>
|
||||
#include "vdpau_private.h"
|
||||
|
||||
#ifdef VL_HANDLES
|
||||
static struct handle_table *htab = NULL;
|
||||
pipe_static_mutex(htab_lock);
|
||||
#endif
|
||||
|
||||
boolean vlCreateHTAB(void)
|
||||
{
|
||||
#ifdef VL_HANDLES
|
||||
boolean ret;
|
||||
/* Make sure handle table handles match VDPAU handles. */
|
||||
assert(sizeof(unsigned) <= sizeof(vlHandle));
|
||||
pipe_mutex_lock(htab_lock);
|
||||
if (!htab)
|
||||
htab = handle_table_create();
|
||||
ret = htab != NULL;
|
||||
pipe_mutex_unlock(htab_lock);
|
||||
return ret;
|
||||
#else
|
||||
return TRUE;
|
||||
#endif
|
||||
}
|
||||
|
||||
void vlDestroyHTAB(void)
|
||||
{
|
||||
#ifdef VL_HANDLES
|
||||
pipe_mutex_lock(htab_lock);
|
||||
if (htab) {
|
||||
handle_table_destroy(htab);
|
||||
htab = NULL;
|
||||
}
|
||||
pipe_mutex_unlock(htab_lock);
|
||||
#endif
|
||||
}
|
||||
|
||||
vlHandle vlAddDataHTAB(void *data)
|
||||
{
|
||||
assert(data);
|
||||
#ifdef VL_HANDLES
|
||||
vlHandle handle = 0;
|
||||
pipe_mutex_lock(htab_lock);
|
||||
if (htab)
|
||||
handle = handle_table_add(htab, data);
|
||||
pipe_mutex_unlock(htab_lock);
|
||||
return handle;
|
||||
#else
|
||||
return (vlHandle)data;
|
||||
#endif
|
||||
}
|
||||
|
||||
void* vlGetDataHTAB(vlHandle handle)
|
||||
{
|
||||
assert(handle);
|
||||
#ifdef VL_HANDLES
|
||||
void *data = NULL;
|
||||
pipe_mutex_lock(htab_lock);
|
||||
if (htab)
|
||||
data = handle_table_get(htab, handle);
|
||||
pipe_mutex_unlock(htab_lock);
|
||||
return data;
|
||||
#else
|
||||
return (void*)handle;
|
||||
#endif
|
||||
}
|
||||
171
src/gallium/state_trackers/vdpau/query.c
Normal file
171
src/gallium/state_trackers/vdpau/query.c
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2010 Younes Manton.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* 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, sub license, 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 (including the
|
||||
* next paragraph) 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 NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include "vdpau_private.h"
|
||||
|
||||
VdpStatus
|
||||
vlVdpGetApiVersion(uint32_t *api_version)
|
||||
{
|
||||
if (!api_version)
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
*api_version = 1;
|
||||
return VDP_STATUS_OK;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpGetInformationString(char const **information_string)
|
||||
{
|
||||
if (!information_string)
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
*information_string = "VDPAU-G3DVL";
|
||||
return VDP_STATUS_OK;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpVideoSurfaceQueryCapabilities(VdpDevice device, VdpChromaType surface_chroma_type,
|
||||
VdpBool *is_supported, uint32_t *max_width, uint32_t *max_height)
|
||||
{
|
||||
if (!(is_supported && max_width && max_height))
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities(VdpDevice device, VdpChromaType surface_chroma_type,
|
||||
VdpYCbCrFormat bits_ycbcr_format,
|
||||
VdpBool *is_supported)
|
||||
{
|
||||
if (!is_supported)
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpDecoderQueryCapabilities(VdpDevice device, VdpDecoderProfile profile,
|
||||
VdpBool *is_supported, uint32_t *max_level, uint32_t *max_macroblocks,
|
||||
uint32_t *max_width, uint32_t *max_height)
|
||||
{
|
||||
if (!(is_supported && max_level && max_macroblocks && max_width && max_height))
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpOutputSurfaceQueryCapabilities(VdpDevice device, VdpRGBAFormat surface_rgba_format,
|
||||
VdpBool *is_supported, uint32_t *max_width, uint32_t *max_height)
|
||||
{
|
||||
if (!(is_supported && max_width && max_height))
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities(VdpDevice device, VdpRGBAFormat surface_rgba_format,
|
||||
VdpBool *is_supported)
|
||||
{
|
||||
if (!is_supported)
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities(VdpDevice device, VdpRGBAFormat surface_rgba_format,
|
||||
VdpYCbCrFormat bits_ycbcr_format,
|
||||
VdpBool *is_supported)
|
||||
{
|
||||
if (!is_supported)
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpBitmapSurfaceQueryCapabilities(VdpDevice device, VdpRGBAFormat surface_rgba_format,
|
||||
VdpBool *is_supported, uint32_t *max_width, uint32_t *max_height)
|
||||
{
|
||||
if (!(is_supported && max_width && max_height))
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpVideoMixerQueryFeatureSupport(VdpDevice device, VdpVideoMixerFeature feature,
|
||||
VdpBool *is_supported)
|
||||
{
|
||||
if (!is_supported)
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpVideoMixerQueryParameterSupport(VdpDevice device, VdpVideoMixerParameter parameter,
|
||||
VdpBool *is_supported)
|
||||
{
|
||||
if (!is_supported)
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpVideoMixerQueryParameterValueRange(VdpDevice device, VdpVideoMixerParameter parameter,
|
||||
void *min_value, void *max_value)
|
||||
{
|
||||
if (!(min_value && max_value))
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpVideoMixerQueryAttributeSupport(VdpDevice device, VdpVideoMixerAttribute attribute,
|
||||
VdpBool *is_supported)
|
||||
{
|
||||
if (!is_supported)
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
|
||||
VdpStatus
|
||||
vlVdpVideoMixerQueryAttributeValueRange(VdpDevice device, VdpVideoMixerAttribute attribute,
|
||||
void *min_value, void *max_value)
|
||||
{
|
||||
if (!(min_value && max_value))
|
||||
return VDP_STATUS_INVALID_POINTER;
|
||||
|
||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||
}
|
||||
59
src/gallium/state_trackers/vdpau/vdpau_private.h
Normal file
59
src/gallium/state_trackers/vdpau/vdpau_private.h
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2010 Younes Manton.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* 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, sub license, 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 (including the
|
||||
* next paragraph) 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 NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include <vdpau/vdpau.h>
|
||||
#include <pipe/p_compiler.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int dummy;
|
||||
} vlVdpDevice;
|
||||
|
||||
typedef uint32_t vlHandle;
|
||||
|
||||
boolean vlCreateHTAB(void);
|
||||
void vlDestroyHTAB(void);
|
||||
vlHandle vlAddDataHTAB(void *data);
|
||||
void* vlGetDataHTAB(vlHandle handle);
|
||||
boolean vlGetFuncFTAB(VdpFuncId function_id, void **func);
|
||||
|
||||
VdpDeviceDestroy vlVdpDeviceDestroy;
|
||||
VdpGetProcAddress vlVdpGetProcAddress;
|
||||
VdpGetApiVersion vlVdpGetApiVersion;
|
||||
VdpGetInformationString vlVdpGetInformationString;
|
||||
VdpVideoSurfaceQueryCapabilities vlVdpVideoSurfaceQueryCapabilities;
|
||||
VdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities;
|
||||
VdpDecoderQueryCapabilities vlVdpDecoderQueryCapabilities;
|
||||
VdpOutputSurfaceQueryCapabilities vlVdpOutputSurfaceQueryCapabilities;
|
||||
VdpOutputSurfaceQueryGetPutBitsNativeCapabilities vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities;
|
||||
VdpOutputSurfaceQueryPutBitsYCbCrCapabilities vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities;
|
||||
VdpBitmapSurfaceQueryCapabilities vlVdpBitmapSurfaceQueryCapabilities;
|
||||
VdpVideoMixerQueryFeatureSupport vlVdpVideoMixerQueryFeatureSupport;
|
||||
VdpVideoMixerQueryParameterSupport vlVdpVideoMixerQueryParameterSupport;
|
||||
VdpVideoMixerQueryParameterValueRange vlVdpVideoMixerQueryParameterValueRange;
|
||||
VdpVideoMixerQueryAttributeSupport vlVdpVideoMixerQueryAttributeSupport;
|
||||
VdpVideoMixerQueryAttributeValueRange vlVdpVideoMixerQueryAttributeValueRange;
|
||||
61
src/gallium/targets/Makefile.vdpau
Normal file
61
src/gallium/targets/Makefile.vdpau
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# This makefile template is used to build libvdpau_g3dvl.so
|
||||
|
||||
LIBBASENAME = vdpau_g3dvl
|
||||
LIBNAME = lib$(LIBBASENAME).so
|
||||
VDPAU_MAJOR = 1
|
||||
VDPAU_MINOR = 0
|
||||
INCLUDES = -I$(TOP)/src/gallium/include \
|
||||
-I$(TOP)/src/gallium/drivers \
|
||||
-I$(TOP)/src/gallium/auxiliary \
|
||||
-I$(TOP)/src/gallium/winsys/g3dvl \
|
||||
$(DRIVER_INCLUDES)
|
||||
DEFINES = -DGALLIUM_TRACE $(DRIVER_DEFINES)
|
||||
LIBS = $(EXTRA_LIB_PATH) $(DRIVER_LIBS) -lvdpau -lXext -lX11 -lm
|
||||
STATE_TRACKER_LIB = $(TOP)/src/gallium/state_trackers/vdpau/libvdpautracker.a
|
||||
|
||||
# XXX: Hack, VDPAU public funcs aren't exported if we link to libvdpautracker.a :(
|
||||
OBJECTS = $(C_SOURCES:.c=.o) \
|
||||
$(ASM_SOURCES:.S=.o) \
|
||||
$(TOP)/src/gallium/state_trackers/vdpau/*.o
|
||||
|
||||
##### RULES #####
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@
|
||||
|
||||
.S.o:
|
||||
$(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@
|
||||
|
||||
##### TARGETS #####
|
||||
|
||||
default: depend symlinks $(TOP)/$(LIB_DIR)/gallium/$(LIBNAME)
|
||||
|
||||
$(TOP)/$(LIB_DIR)/gallium/$(LIBNAME): $(OBJECTS) $(PIPE_DRIVERS) $(STATE_TRACKER_LIB) $(TOP)/$(LIB_DIR)/gallium Makefile
|
||||
$(MKLIB) -o $(LIBBASENAME) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
|
||||
-major $(VDPAU_MAJOR) -minor $(VDPAU_MINOR) $(MKLIB_OPTIONS) \
|
||||
-install $(TOP)/$(LIB_DIR)/gallium \
|
||||
$(OBJECTS) $(STATE_TRACKER_LIB) $(PIPE_DRIVERS) $(LIBS)
|
||||
|
||||
$(TOP)/$(LIB_DIR)/gallium:
|
||||
mkdir -p $@
|
||||
|
||||
depend: $(C_SOURCES) $(ASM_SOURCES) $(SYMLINKS)
|
||||
rm -f depend
|
||||
touch depend
|
||||
$(MKDEP) $(MKDEP_OPTIONS) $(DEFINES) $(INCLUDES) $(C_SOURCES) \
|
||||
$(ASM_SOURCES) 2> /dev/null
|
||||
|
||||
# Emacs tags
|
||||
tags:
|
||||
etags `find . -name \*.[ch]` `find ../include`
|
||||
|
||||
# Remove .o and backup files
|
||||
clean:
|
||||
-rm -f *.o *~ *.so $(SYMLINKS)
|
||||
-rm -f depend depend.bak
|
||||
|
||||
#install: $(LIBNAME)
|
||||
# $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
|
||||
# $(MINSTALL) -m 755 $(LIBNAME) $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR)
|
||||
|
||||
include depend
|
||||
19
src/gallium/targets/vdpau-softpipe/Makefile
Normal file
19
src/gallium/targets/vdpau-softpipe/Makefile
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
TOP = ../../../..
|
||||
include $(TOP)/configs/current
|
||||
|
||||
DRIVER_DEFINES = -DGALLIUM_SOFTPIPE
|
||||
DRIVER_INCLUDES =
|
||||
|
||||
PIPE_DRIVERS = \
|
||||
$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a \
|
||||
$(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
|
||||
$(TOP)/src/gallium/auxiliary/libgallium.a
|
||||
|
||||
C_SOURCES = \
|
||||
$(TOP)/src/gallium/winsys/g3dvl/xlib/xsp_winsys.c
|
||||
|
||||
DRIVER_LIBS =
|
||||
|
||||
include ../Makefile.vdpau
|
||||
|
||||
symlinks:
|
||||
Loading…
Add table
Reference in a new issue