gpu_renderer: disable debug callback on arm

The vararg bindings are different for different architectures. Limit
support to x86 and x86_64, since those are the bindings that are checked
in.

BUG=chromium:1063640
TEST=compiles

Change-Id: Ic69753959684f55855fd7a8577a422638cd05f8b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2114633
Reviewed-by: Lepton Wu <lepton@chromium.org>
Reviewed-by: Chirantan Ekbote <chirantan@chromium.org>
Commit-Queue: David Stevens <stevensd@chromium.org>
Tested-by: David Stevens <stevensd@chromium.org>
This commit is contained in:
David Stevens 2020-03-23 14:38:34 +09:00 committed by Commit Bot
parent d5c1e968c9
commit 911e21e392
2 changed files with 10 additions and 1 deletions

View file

@ -9,6 +9,7 @@ mod generated;
mod vsnprintf; mod vsnprintf;
use std::cell::RefCell; use std::cell::RefCell;
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
use std::ffi::CString; use std::ffi::CString;
use std::fmt::{self, Display}; use std::fmt::{self, Display};
use std::fs::File; use std::fs::File;
@ -33,6 +34,7 @@ use crate::generated::p_format::PIPE_FORMAT_B8G8R8X8_UNORM;
use crate::generated::virglrenderer::*; use crate::generated::virglrenderer::*;
pub use crate::command_buffer::CommandBufferBuilder; pub use crate::command_buffer::CommandBufferBuilder;
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
pub use crate::vsnprintf::vsnprintf; pub use crate::vsnprintf::vsnprintf;
/// Arguments used in `Renderer::create_resource`.. /// Arguments used in `Renderer::create_resource`..
@ -248,7 +250,10 @@ impl Renderer {
fence_state: Rc::clone(&fence_state), fence_state: Rc::clone(&fence_state),
})); }));
unsafe { virgl_set_debug_callback(Some(Renderer::debug_callback)) }; #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe {
virgl_set_debug_callback(Some(Renderer::debug_callback))
};
// Safe because a valid cookie and set of callbacks is used and the result is checked for // Safe because a valid cookie and set of callbacks is used and the result is checked for
// error. // error.
@ -474,6 +479,7 @@ impl Renderer {
Err(Error::Unsupported) Err(Error::Unsupported)
} }
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
extern "C" fn debug_callback( extern "C" fn debug_callback(
fmt: *const ::std::os::raw::c_char, fmt: *const ::std::os::raw::c_char,
ap: *mut generated::virglrenderer::__va_list_tag, ap: *mut generated::virglrenderer::__va_list_tag,

View file

@ -12,6 +12,7 @@
* -o vsnprintf.rs * -o vsnprintf.rs
*/ */
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
extern "C" { extern "C" {
pub fn vsnprintf( pub fn vsnprintf(
__s: *mut ::std::os::raw::c_char, __s: *mut ::std::os::raw::c_char,
@ -20,6 +21,8 @@ extern "C" {
__arg: *mut __va_list_tag, __arg: *mut __va_list_tag,
) -> ::std::os::raw::c_int; ) -> ::std::os::raw::c_int;
} }
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
#[repr(C)] #[repr(C)]
#[derive(Debug, Copy, Clone)] #[derive(Debug, Copy, Clone)]
pub struct __va_list_tag { pub struct __va_list_tag {